【Agent智能体】30智库检索与多路搜索

发布时间:2026/7/8 8:17:03
【Agent智能体】30智库检索与多路搜索 章节三十智库——检索与多路搜索一、检索数据图定义检索流程的整体架构设计采用自顶向下的开发模式先搭骨架再串流程验证通畅后填充业务逻辑。状态定义检索流程中所有节点共享一个状态对象State用来存储用户问题、商品名、检索结果、答案等数据各节点通过读写这个状态来传递信息。节点基类所有检索节点都继承同一个基类NodeBase基类提供了日志记录、配置读取等公共能力避免每个节点重复写。主图定义检索流程定义了8个核心节点按顺序串联产品确认节点node_item_name_confirm确定用户问的是哪个产品向量检索节点node_search_embedding在向量库里搜相关文档HyDE假设检索节点node_search_embedding_hyde先生成假答案再搜网络搜索节点node_web_search_mcp联网搜索补充信息RRF倒排融合节点node_rrf合并多路检索结果Rerank重排序节点node_rerank对结果精细打分排序答案生成节点node_answer_output生成最终回答主图通过LangGraph将各节点按业务流转规则串联支持条件分支比如产品未确认时直接返回追问。二、产品确认节点产品确认节点的作用是根据用户问题初步确定要查的是哪个产品以便在知识库中精准定位手册。核心流程第一步参数校验。检查状态中的用户问题和会话ID是否有效。第二步读取历史会话。从MongoDB中获取最近10条聊天记录用于构建上下文帮助理解当前问题的意图。第三步保存当前问题。将用户提问存入数据库保证对话历史完整。第四步意图理解与改写。调用大模型完成两件事一是提取商品名支持多个二是把模糊问题改写成完整独立的精准问题。比如这个怎么用改写成HAK180烫金机的操作方法。改写的目的是把用户口语化、模糊的原始问题转化为精准的检索语句。第五步向量化评分。把提取出的商品名用BGE-M3生成双向量在Milvus中进行混合搜索稠密权重0.8稀疏权重0.2与知识库中已有的标准商品名比对获取相似度评分。第六步商品名对齐。根据评分结果分三种情况处理评分大于0.85直接确认该商品系统认为匹配度极高。评分在0.6到0.85之间作为候选商品生成反问让用户确认。评分低于0.6认为不相关直接丢弃。第七步分支处理。已确认商品更新状态回填历史消息中缺失的商品名关联进入后续检索流程。有候选但未确认生成澄清话术返回给用户中断流程等用户回复。无任何结果生成通用回复返回给用户。第八步持久化。把交互数据写入MongoDB历史记录。三、向量搜索向量搜索节点负责根据改写后的问题在限定商品范围内从Milvus向量库中召回最相关的知识切片。第一步获取查询上下文。从状态中提取改写后的问题和确认的商品名列表。第二步文本向量化。调用BGE-M3模型将问题转换为稠密向量和稀疏向量。第三步构建混合检索请求。如果有确定的商品名就构造过滤条件限定搜索范围。同时结合稠密向量余弦距离和稀疏向量内积进行多路召回。第四步执行检索。连接Milvus的切片集合用0.8/0.2的权重对稠密和稀疏得分加权融合返回Top 5最相关的文档切片。第五步更新状态。把检索到的切片列表存入状态供后续节点使用。四、HyDE搜索什么是HyDEHyDEHypothetical Document Embeddings是一种让检索更聪明的技巧。当用户只给了一句短问题比如HAK180烫金机怎么用直接搜可能效果不好因为问题太短、语义信息太少。HyDE的做法是先让大模型脑补一段可能的答案或说明文档这段文字通常更具体、包含更多关键词和专业术语。然后用这段假想文档去做向量检索效果往往比直接用原始问题好得多。实现流程第一步获取假设性答案。把用户的问题发给大模型让它生成一段假想的答案文档。这段文档会更详细包含操作步骤、专业术语等。第二步向量化检索。把改写后的问题 假设性答案一起生成向量到Milvus向量库中检索相关切片。因为假设答案的语义更饱满更容易命中知识库中的相关内容。HyDE的缺点是也可能脑补过头生成的假设文本带偏方向。所以通常配合过滤、重排或多路检索一起用不全靠它。五、网络搜索网络搜索节点负责调用百炼MCP联网搜索服务获取互联网上的实时信息作为本地知识库的补充。准备工作使用MCP服务需要先在阿里云百炼平台开通注册阿里云账号并完成实名认证在百炼MCP广场搜索并选择目标搜索服务配置API Key、选择部署模式和计费模式获取MCP服务的Streamable HTTP Endpoint地址处理流程第一步建立MCP连接。通过OpenAI SDK连接百炼MCP服务使用配置好的API Key和Endpoint。第二步调用搜索工具。通过call_tool()调用百炼的bailian_web_search搜索工具传入用户查询内容。第三步解析与格式化。从MCP流式响应中提取有效数据保留标题、链接、摘要三个核心字段清洗空值和无效结果封装为统一的文档列表格式。第四步资源清理。无论搜索成功还是失败都关闭MCP连接释放资源。第五步更新状态。将格式化后的网络搜索结果存入状态的web_search_docs字段供后续重排序和答案生成使用。名词解释HyDE一种搜索技巧先让AI生成假答案再用它去搜向量库提高检索准确率。RRF倒数排名融合算法不看具体分数只看排名把多路搜索结果合并排序。Rerank重排序对初筛结果用模型精细打分把最相关的放前面。MCP模型上下文协议一种让AI调用外部工具的标准接口。混合检索同时用稠密向量语义匹配和稀疏向量关键词匹配搜索取长补短。召回先从数据库里快速找出一批候选结果不要求很精准。StateLangGraph里的状态对象整个工作流中各节点共享的数据容器。节点工作流里的一个处理步骤比如调用模型、处理数据、判断分支。改写把用户口语化、模糊的原始问题改写成精准的检索语句。