知识库
一、核心流程(标准 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、重新生成向量 / 关键词索引 → 下次直接命中

浙公网安备 33010602011771号