除了使用外部的mcp工具,还可以利用内部创建的知识库来使智能体的回答更加准确。例如创建常见的客服问答文档,这样就可以利用知识库部署一个用于客服的智能体。有一些使用场景非常适合使用知识库,例如:智能客服、虚拟角色、垂直场景

那么智能体是如何使用知识库的呢?智能体对知识库的使用主要通过存储和检索两个核心步骤实现,使用向量存储保证语义的相似,以及Elasticsearch保证精确匹配。

一.存储


1.向量存储(Milvus)
1)分段处理:将知识库内容(如文档、文本)分割为固定长度的片段(如 500 字 / 段),或者是按照语义分片(先把文件按照句号拆分,然后使用embedding模型得到每一句的向量,计算相邻两句的预先,如果大于设置的阈值,就合并这两句)

2)向量化转换:使用深度学习模型将每个片段转换为高维向量,简单讲就是把一段话转换为一个向量化的double数组

3)向量数据库存储:将向量化后的片段存入向量数据库

2.ES存储
1)文本索引:将分段后的原文内容存入 ES,建立关键词索引,支持关键词快速检索

实现细节:

知识库文档的解析可以拆成一个微服务,主要有两个过程:文件上传文件解析。文件上传就是把文件上传到一个共享的文件夹,重点的是文件的解析。通常使用定时任务触发文件的解析,首先从文件夹读出一个未处理的文件,然后将文件按照分片类型进行分片,包括默认分片(固定500字符左右一个分片)、自定义分片(按照固定的字符分片)、语义分片。语义分片先把文件按照一句话拆分开,然后使用embedding模型得到每一句的向量,计算相邻两句的余弦,如果大于设置的阈值,代表这两句的语义是相似的,就合并相邻的两句。再次调用embedding模型来计算每个分片的向量,最后把分片存入milvus和es。

二.检索


1.向量检索


将查询也向量化,按照余弦相似度,召回相似的片段

2.es搜索

根据倒排索引快速定位包含查询关键词的片段,再通过评分算法(如 TF-IDF、BM25)计算片段与查询的相似度,衡量关键词出现频率、重要性等。

3.重排序

将向量搜索、es搜索这两路的召回结果合并,发送给重排序的大模型进行评分,然后重排序出和查询最相关的top-k的分片

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐