APIQIKAPIQIK
文档导航
场景参考

知识库问答 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 预算内截断。
  • 将用户问题与知识片段明确分隔,降低提示注入风险。
  • 答案中的引用由应用校验并渲染,避免模型生成不存在的链接。

评测指标

指标说明
召回率正确答案所需片段是否进入候选集合。
上下文精度送入模型的片段中有多少真正相关。
答案忠实度回答是否能被给定资料支持,而非依赖猜测。
引用正确率引用编号是否对应支持该结论的原始片段。
拒答正确率资料不足时是否按预期拒绝回答。

把检索内容视为不可信输入 外部文档可能包含提示注入语句。系统指令应明确要求模型忽略资料中的操作性指令,只把资料当作待引用内容。