场景参考
知识库问答 RAG
把检索到的可信片段作为上下文注入模型,并输出可追踪引用。
检索增强生成先从你的知识库找到相关片段,再让模型基于这些材料回答,适合产品帮助、企业制度和内部知识问答。
处理流程
用户问题 查询改写 → 知识库检索 排序与截断 → Dimleap 基于上下文回答
最小生成示例
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["APIQIK_API_KEY"],
base_url="https://api.dimleap.cn/v1",
)
# 假设这些片段已由你的检索系统返回。
documents = [
{"id": "doc-17", "text": "Dimleap 的 Base URL 是 https://api.dimleap.cn/v1。"},
{"id": "doc-23", "text": "对话接口路径是 /chat/completions,使用 Bearer Token。"},
]
context = "\n\n".join(
f"[{item['id']}] {item['text']}" for item in documents
)
response = client.chat.completions.create(
model="glm-5.1",
messages=[
{
"role": "system",
"content": (
"仅依据给定资料回答。资料不足时说“资料中没有说明”。"
"在每个结论后使用 [文档ID] 标注来源。"
),
},
{
"role": "user",
"content": f"资料:\n{context}\n\n问题:Dimleap 的对话接口地址是什么?",
},
],
temperature=0.2,
)
print(response.choices[0].message.content)检索质量比提示词更关键
- 切分文档时保留标题、章节路径和更新时间等元数据。
- 召回后进行重排,删除重复或相互冲突的片段。
- 上下文按相关性排序,并在 Token 预算内截断。
- 将用户问题与知识片段明确分隔,降低提示注入风险。
- 答案中的引用由应用校验并渲染,避免模型生成不存在的链接。
评测指标
| 指标 | 说明 |
|---|---|
| 召回率 | 正确答案所需片段是否进入候选集合。 |
| 上下文精度 | 送入模型的片段中有多少真正相关。 |
| 答案忠实度 | 回答是否能被给定资料支持,而非依赖猜测。 |
| 引用正确率 | 引用编号是否对应支持该结论的原始片段。 |
| 拒答正确率 | 资料不足时是否按预期拒绝回答。 |
把检索内容视为不可信输入 外部文档可能包含提示注入语句。系统指令应明确要求模型忽略资料中的操作性指令,只把资料当作待引用内容。