知识库章节 ▾

工具

工具

LlamaIndex + Gonka AI — 低成本的 RAG 应用程序

LlamaIndex 是构建 RAG 应用程序和 Python AI 代理的领先框架(也有 TypeScript 版本的 LlamaIndex.TS)。它负责文档加载、分块、索引、矢量搜索和答案组装——您描述数据,LlamaIndex 将其转换为任何 LLM 上的问答系统。

问题只有一个——推理成本。RAG 本质上是消耗资源的:每个问题都会将查询和几个找到的上下文片段发送到模型,对于大型集合的索引,还会添加嵌入。在生产规模下,这每天意味着数千个请求。对于 OpenAI(每 100 万令牌 2.50-15 美元)或 Anthropic(每 100 万令牌 3-15 美元),即使是一个简单的问答服务也会每月花费数万美元。

LlamaIndex 通过 OpenAILike 类原生支持任何 OpenAI 兼容的端点。这意味着 JoinGonka Gateway 可以通过几行代码连接——无需自定义提供商和补丁。结果是:相同的 RAG 系统通过 Gonka 去中心化网络每 100 万输入令牌 0.0005 美元(输出 ×3)运行——比云 API 便宜数百甚至数千倍。

快速入门:通过 OpenAILike 连接

JoinGonka API 密钥:在 gate.joingonka.ai/register 注册——开始时我们提供 10M 免费令牌——并在 Dashboard 中创建 jg-xxx 密钥。

安装

pip install llama-index llama-index-llms-openai-like

对于任意 OpenAI 兼容的 API,LlamaIndex 提供了 llama_index.llms.openai_like 包中的 OpenAILike 类。向 Gonka 发送请求的最简单示例:

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-你的密钥",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,            # Gonka 是一个聊天端点
    is_function_calling_model=True, # 支持原生 tool calling
    context_window=131072,         # Qwen3-235B 的 128K
    max_tokens=8192,               # 通过 Gateway 的输出上限 (Qwen)
)

response = llm.complete("请用三句话解释什么是 RAG。")
print(response)

关于 OpenAILike 的重要提示:务必指定 is_chat_model=True——否则 LlamaIndex 会转到我们没有的 completions 端点。is_function_calling_model=True 启用原生 tool calls。根据模型设置 context_window,以便 LlamaIndex 正确切割上下文。

示例:带有查询引擎的 RAG 管道

LlamaIndex 的经典场景是根据您的文档建立索引,并通过 query_engine 查询该索引。全局 LLM 通过 Settings.llm 设置一次,之后整个管道都会自动使用 Gonka。

from llama_index.core import (
    VectorStoreIndex,
    SimpleDirectoryReader,
    Settings,
)
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 1. 通过 Gonka 的 LLM (一次 — 全局)
Settings.llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-你的密钥",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,
    context_window=131072,
    max_tokens=8192,
)

# 2. 本地嵌入 (免费,不使用 OpenAI)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

# 3. 从 ./data 文件夹加载并索引文档
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)

# 4. 查询知识库
query_engine = index.as_query_engine()
response = query_engine.query("这份文件是关于什么的?")
print(response)

关于嵌入的关键点:默认情况下,VectorStoreIndex 使用 OpenAI 嵌入(text-embedding-ada-002)——这些是单独的对 OpenAI 的付费调用,而不是 Gonka。为了完全避免使用 OpenAI,请通过 Settings.embed_model 设置本地嵌入模型(如上例所示——HuggingFaceEmbedding,包 pip install llama-index-embeddings-huggingface)。这样,生成通过 Gonka 进行,而向量化则在本地免费进行。

成本:一个 RAG 管道请求(搜索 + 生成)消耗约 2–5K LLM 令牌。通过 Gonka,这只是一分钱的几分之一;通过 OpenAI/Anthropic,成本会高出 3–4 个数量级。在每天数千个请求的流量下,这种差异将转化为每月数万美元的节省。

RAG 负载成本比较

RAG 应用程序不是一次性的聊天,而是持续的请求流:用户的每个问题都会调用 2–5K LLM 令牌(问题本身加上找到的上下文片段)。我们来计算典型的工作量以及在不同提供商上的成本。通过 JoinGonka Gateway 的 Gonka 价格:输入约 0.0005 美元/1M 令牌,输出约 3 倍。

场景LLM 令牌数OpenAI / AnthropicJoinGonka Gonka
对知识库的一个问题~4K$0.01 — $0.06~$0.000005
支持聊天机器人(每天 1K 请求)~4M/天$10 — $60/天~$0.005/天
索引 + Q&A(1M 单词语料库)~5M$12 — $75~$0.006
生产服务,每月 50K 请求~200M/月$500 — $3,000/月~$0.25/月

通过免费的 10M 令牌,您可以调试整个 RAG 管道,索引测试语料库并运行数千个查询——而无需花费一分钱。在生产规模下,JoinGonka Gateway 将 RAG 从昂贵的服务变为几乎可以忽略不计的开销。

代理、工具调用和模型选择

LlamaIndex 不仅能够根据文档回答问题,还可以构建带有工具的代理。Gonka 的所有三种模型都支持原生 tool calling——代理以结构化的方式调用函数,而无需解析文本。带有工具的代理示例:

import asyncio
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    api_base="https://gate.joingonka.ai/v1",
    api_key="jg-你的密钥",
    model="Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=131072,
    max_tokens=8192,
)

def multiply(a: float, b: float) -> float:
    """将两个数字相乘。"""
    return a * b

agent = FunctionAgent(
    tools=[multiply],
    llm=llm,
    system_prompt="你是一个有用的助手。计算时请使用工具。",
)

async def main():
    result = await agent.run("1234 乘以 5678 等于多少?")
    print(result)

asyncio.run(main())

模型选择model 字段和相应的 context_window / max_tokens 限制):

模型 (model)上下文最大输出何时使用
Qwen/Qwen3-235B-A22B-Instruct-2507-FP8128K8192默认:RAG、代理、长答案
moonshotai/Kimi-K2.6128K3072强大的推理和 tool calling
MiniMaxAI/MiniMax-M2.7128K4096代理任务的替代方案

通过 Gateway 的 max_tokens 限制——Qwen3 模型最多 8192;Kimi 和 MiniMax 分别指定 3072 和 4096。如果未指定非流式请求的 max_tokens,Gateway 默认返回最多 1500 令牌——对于 RAG 答案和代理步骤,请明确设置值。

TypeScript:对于 LlamaIndex.TS,也有类似的路径——@llamaindex/openai 包中的 OpenAI 类接受 baseURLapiKey(或读取 OPENAI_BASE_URL / OPENAI_API_KEY 变量),因此相同的 Gateway 也可以在 Node.js 堆栈中连接。如果也使用 Python 框架构建 AI 应用程序,请参阅 LangChain 指南。

LlamaIndex + Gonka = 生产就绪的 RAG 和代理,成本极低。通过 OpenAILike 连接 (is_chat_model=True),原生 tool calling,本地嵌入——输入每 1M 令牌 0.0005 美元,而不是 OpenAI 的 2.50-15 美元。10M 免费令牌足以调试整个管道。

想了解更多?

探索其他章节或立即开始赚取 GNK。

获取免费的 10M 令牌 →