对比RAG检索增强生成与长上下文直推两种模式,并指出Oxlo.ai按请求计费而非按token计费如何改变检索策略与模型选型。
一个生产级问答系统很少只是一个 prompt 加一个模型。你需要检索(retrieval)来将答案锚定在私有数据上,需要一个能够跨长文档推理的生成器,以及一个不会因为大输入而让你付出高昂代价的推理后端。大多数教程默认采用按 token 计费,这使得长上下文问答成本高昂。Oxlo.ai 使用扁平化按请求定价,因此将检索到的知识库塞进 prompt 的成本与一个一句话查询相同。这改变了你设计检索步骤的方式,也改变了你能够负担得起的模型。
大多数 LLM 问答系统遵循两种模式之一。检索增强生成(Retrieval-Augmented Generation,简称 RAG)将文档嵌入向量数据库,在生成前检索 top-k 相关片段。另一种是长上下文直接推理,跳过检索,将整个文档甚至语料库直接放入模型的上下文窗口。混合方法则是先检索,再对结果进行重排序,并将大量子集注入长上下文模型进行最终综合。
你的选择取决于延迟、语料库规模和更新频率。当数据经常变化时,RAG 是必不可少的。当你有静态手册或法律合同,且模型有足够大的上下文窗口时,长上下文推理更简单。Oxlo.ai 同时提供 DeepSeek V4 Flash(提供 100 万上下文窗口)和 Kimi K2.6(13.1 万上下文窗口),所以你不必为了避免 token 成本而被迫构建复杂的检索管道。
对于基于检索文本的事实提取,一个有能力的通用模型通常就足够了。在 Oxlo.ai 上,Llama 3.3 70B 是低延迟答案的可靠默认选择。如果问题需要多步推理,例如跨文档比较条款或对表格数据执行计算,请切换到推理专家。DeepSeek R1 671B MoE、Kimi K2.6 或 Qwen 3 32B 都能很好地处理思维链推理。由于 Oxlo.ai 按请求而非按 token 计费,你可以发送冗长的推理 prompt 或接收长的思维链输出,而不必看着计量成本攀升。
如果你使用 RAG,你需要嵌入模型将文本转换为向量。Oxlo.ai 通过标准 OpenAI 兼容嵌入端点提供 BGE-Large 和 E5-Large。你可以将向量存储在任何数据库中,如 pgvector、Chroma 或 Pinecone,然后在查询时运行余弦相似度计算。
import openai
client = openai.OpenAI(
base_url="https://api.oxlo.ai/v1",
api_key="YOUR_OXLO_API_KEY"
)
def get_embedding(text):
response = client.embeddings.create(
model="bge-large",
input=[text]
)
return response.data[0].embedding
对文档进行批量索引,保持 chunk 大小在 256 到 512 token 之间并设置重叠,存储元数据以便在最终答案中引用来源。
聊天补全端点是 OpenAI SDK 的直接替代品。检索到上下文片段后,将它们注入 system 或 user 消息,并要求模型严格基于提供的文本回答。支持流式传输,因此可以在生成时将 token 返回给用户。
def answer_question(question, contexts):
context_block = "\n---\n".join(contexts)
prompt = f"Context:\n{context_block}\n\nQuestion: {question}"
stream = client.chat.completions.create(
model="llama-3.3-70b",
messages=[
{"role": "system", "content": "You are a precise QA assistant. Answer using only the provided context."},
{"role": "user", "content": prompt}
],
stream=True
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
此模式适用于任何 Oxlo.ai 聊天模型。你可以切换到 Qwen 3 32B 处理多语言文档,或 DeepSeek R1 671B MoE 处理推理密集型问题,而无需更改任何客户端代码。
基于 token 的计费会抑制使用大上下文窗口的意愿。当每个输入 token 都要花钱时,将十个检索到的段落塞进 prompt 感觉像是一种预算风险。Oxlo.ai 消除了这种摩擦。该平台对每个 API 请求收取一个固定费率,无论 prompt 长度如何。这意味着 1000 token 的问题和 10 万 token 的文档分析费用相同。
对于内部知识库或法律发现,你通常可以将整个文档集放入 DeepSeek V4 Flash 的 100 万上下文窗口中,直接提问。你消除了检索延迟,降低了架构复杂性,但仍支付单一请求费用。如果你的语料库大于一个上下文窗口,使用检索缩小到相关子集,然后将那个子集注入长上下文模型进行综合。无论哪种方式,你的成本都是可预测的。
某些问题仅从静态文本无法回答。如果用户询问当前服务器状态或希望在私有数据上运行计算,模型需要工具。Oxlo.ai 在兼容模型上支持函数调用和工具使用,包括 Qwen 3 32B 和 Minimax M2.5。
tools = [
{
"type": "function",
"function": {
"name": "query_database",
"description": "Run a SQL query against the internal analytics database",
"parameters": {
"type": "object",
"properties": {
"sql": {"type": "string"}
},
"required": ["sql"]
}
}
}
]
response = client.chat.completions.create(
model="qwen-3-32b",
messages=[{"role": "user", "content": "What were yesterday's top errors?"}],
tools=tools
)
模型可以决定调用函数,接收结果,并在多轮对话中生成最终答案。这将一个简单的问答机器人变成了可以对实时数据进行推理的 Agent。
完整的 pipeline 如下。第一步,使用 Oxlo.ai 的嵌入端点对文档进行分块和嵌入。第二步,存储向量和元数据。第三步,在查询时,嵌入问题,检索 top-k 片段,并构建上下文块。第四步,将上下文和问题发送给启用了流式传输的 Oxlo.ai 聊天模型。第五步,如果问题需要实时数据,定义工具并让模型调用它们。
由于 Oxlo.ai 完全兼容 OpenAI SDK,你可以通过仅更改 base URL 和 API key 来使用现有代码进行原型设计。热门模型没有冷启动,因此一天中的第一个请求和第一百个请求一样快。
构建问答系统很简单,但成本结构会塑造架构。基于 token 的定价促使开发者使用更小的 prompt 和更复杂的检索层。Oxlo.ai 的扁平按请求定价让你可以毫无预算顾虑地使用长上下文模型和大 prompt 填充。凭借 45+ 模型、嵌入端点、工具调用和流式传输,Oxlo.ai 为你提供了在一致 API 下构建 RAG、长上下文或 Agent 问答系统的基础设施。