知识库

一、核心流程(标准 RAG 架构)

Agent 知识库本质就是 RAG(检索增强生成),流程固定 4 步:
1、文档处理:切分、清洗、结构化
2、向量化:文本 → 向量
3、检索:用户问题 → 查最相关片段
4、重排 + 匹配:精排结果,送给 LLM

二、文档处理(决定检索质量 50%)

1. 切分策略
按段落 / 句子切(通用)
按标题层级切(文档、手册)
固定长度 + 滑动窗口(避免上下文断裂)
保留:来源、页码、章节、标题(用于召回过滤)
2. 元数据非常重要
必须给每个 chunk 打标签:
文档类型(FAQ / 规则 / 接口 / 产品)
部门、版本、语言、有效性
检索时可按元数据过滤,大幅提升精度

数据清洗Prompt:
你是专业的【知识库清洗智能体】。
请对下面的原始文本执行全自动清洗,严格按以下规则处理:

1. 去噪:删除页码、页眉、页脚、广告、版权、乱码、多余符号、空行。
2. 去重:删除重复句子、重复段落。
3. 纠错:修正错别字、语病、不通顺语句。
4. 结构化:自动生成标题、列表、步骤、清晰格式。
5. 标准化:统一术语、统一单位、统一日期格式。
6. 精简:删除废话,保留核心信息,长句拆短句,长段落拆分。

输出要求:
- 只输出清洗后的干净内容
- 不要解释
- 不要增加原文没有的信息
- 格式使用清晰Markdown

开始清洗:
{{原始文本}}

三、向量化(Embedding)

1. 选型(国内最稳)
通用:bge-small/Base、m3e、text2vec
垂直领域:用领域数据继续微调
维度:768 或 1024 足够
2. 统一规则
问题和文档用同一个模型
统一做预处理:去特殊符号、统一换行、统一大小写

四、检索(召回阶段:快 + 全)

1. 主流检索方式
向量检索(语义匹配)
适合:意图理解、同义问法、模糊查询
关键词检索(BM25/ES)
适合:专业术语、实体、强规则
混合检索(最推荐)
向量召回 top30 + BM25 召回 top20 → 合并去重
2. 存储选型
轻量:FAISS、Chroma
生产:Milvus、Qdrant、ES + 向量插件
企业:阿里云 / 腾讯云 / 百度向量数据库

五、重排 & 匹配(精排阶段:准)

召回只是 “粗选”,重排才是精准匹配。
1. 方法
Cross-Encoder 重排模型(效果最好)
bge-reranker、gte-reranker
规则匹配
实体命中数、关键词覆盖、章节权重
LLM 打分
让模型判断:这段是否能回答问题 0~1 分
2. 最终输出
只给 Agent top3~top5 最相关片段,避免干扰。

六、Agent 怎么用检索结果?

1、用户提问 → 意图识别(是否需要查知识库)
2、生成检索 query(必要时改写、扩写)
3、检索 + 重排
4、构造 prompt
请根据以下参考资料回答,不要编造:{参考资料}用户问题:{query}
5、Agent 决定
直接回答
继续检索(多轮检索)
拒绝回答(无资料)

七、最实用的一套技术栈(直接抄)

1、切分:LangChain / LlamaIndex / 自己写
2、Embedding:BGE-M3 或 m3e
3、检索:Milvus + BM25
4、重排:bge-reranker-large
5、LLM:Qwen、GLM、DeepSeek 等
6、存储:MySQL(元数据)+ 向量库

八、关键优化技巧(必做)

1、FAQ 单独建库,优先匹配

分库策略:将 FAQ 和通用知识分别存入独立的检索库(关键字索引 + 向量索引),FAQ 库做轻量化优化;
优先匹配:检索请求先命中 FAQ 库,若匹配到高置信度结果,直接返回;若未匹配到,再检索通用知识库;
多库融合:最终结果按优先级(FAQ > 通用)和相似度排序,保证 FAQ 答案优先展示。

2、同义词词典:术语归一

术语归一本质是:建立 “非标准术语→标准术语” 的映射关系,在检索前对用户输入做归一化处理,在数据入库前对原始文本做归一化处理,让 “不同表述、同一含义” 的术语在检索时能匹配到同一结果。

3、多层检索:先查标题 → 再查内容

核心设计思路
1、分层索引:为文档的「标题」和「内容」分别建立独立的关键字 / 向量索引(标题索引轻量化,内容索引更全面);
2、两步检索:
第一步(粗筛):用查询语句检索标题索引,获取高相关的文档 ID 列表(缩小范围);
第二步(精筛):仅在标题匹配的文档范围内,检索内容索引,最终按综合相似度排序;
3、优先级加权:标题匹配度权重 > 内容匹配度权重,保证核心主题一致

4、缓存高频问题

核心设计思路
1、缓存选型:优先用 Redis(内存数据库,支持过期时间、高性能),本地开发可先用 Python 字典模拟;
2、缓存策略:
缓存键(Key):用户查询语句的归一化结果(先做术语归一,再作为 Key,避免 “苹果 15” 和 “iPhone 15” 生成两个缓存);
缓存值(Value):检索结果(包含文档 ID、标题、内容、得分等);
过期策略:设置合理的过期时间(如 1 小时),避免缓存数据过期;
更新策略:当知识库内容更新时,主动清空相关缓存(或设置过期时间自动失效);
3、执行流程:
用户查询 → 术语归一 → 检查缓存 → 命中则直接返回 → 未命中则执行多层检索 → 结果写入缓存 → 返回结果。

5、bad case 持续迭代:检索不到的问题加入库

核心思路
1、所有用户问题先过检索
2、检索无结果 / 置信度极低 → 判定为 Bad Case
3、自动存入「待入库问题表」
4、后台人工审核:有用 → 加入 FAQ / 知识库
5、重新生成向量 / 关键词索引 → 下次直接命中

 

posted @ 2026-02-26 14:52  士三刀  阅读(67)  评论(0)    收藏  举报