智能体 (AI Agent) 开发实战之【LangChain】(三) 结合大模型基于 RAG 实现本地知识库问答优化

上一篇介绍了基于 RAG 实现简单的知识库问答功能,使用了两个向量数据库 Chroma 和 FAISS,测试了功能情况。这篇文章继续优化,引入开源嵌入大模型 all-MiniLM-L6-v2,并改造为先用大模型回答,再根据问题关键词从内部知识库查询问答结果。
一、嵌入大模型 all-MiniLM-L6-v2 介绍
all - MiniLM - L6 - v2 是一个轻量级的语言模型,在自然语言处理领域应用广泛。基于 Transformer 架构,有 6 层 Transformer 编码器,具有 38M 参数,模型文件大小约 70MB。该系列模型旨在通过知识蒸馏等技术,在保持较高性能的同时,减小模型规模,提高模型的运行效率和可部署性。以下是这个模型的特点
1.轻量级
参数量少,模型文件小,运行时资源消耗少,在 CPU 上推理速度可达 780 字 / 秒,GPU 显存需求仅 2GB,适合在边缘设备、集成显卡或资源受限的环境中运行。
2.性能出色
通过对比学习和知识蒸馏技术,在句子相似度、信息检索等任务中表现优异,在相关的 MTEB 榜单准确率接近大型模型,尤其擅长处理短文本。并且对多语言有较好的兼容性,支持 30 多种语言场景。
3.开发友好
借助 sentence - transformers 库,仅需几行代码即可加载模型并生成句子嵌入,开发成本低,便于集成到各种应用中。同时,它还支持与 Faiss 、Chroma 等向量数据库结合,实现高效的文本聚类与检索。
二、具体的功能实现
1.创建 HuggingFaceEmbeddings 实例
2.问答优化
3.运行代码测试功能
增加了几个文档,从不同纬度描述了相关内容,如下图所示:

运行效果如下图所示:

三、总结
all-MiniLM-L6-v2 是低版本的模型,我只是为了本地测试。如需要可以使用更大参数的 all-MiniLM-L12-v2 等。不同的预训练模型在不同的任务和领域中可能表现不同,要根据具体需求选择合适的模型。后续可基于这个功能进行扩展和优化,敬请关注。
版权声明: 本文为 InfoQ 作者【我和AI的成长】的原创文章。
原文链接:【http://xie.infoq.cn/article/bf776f0a411defad3fa11c3de】。文章转载请联系作者。
评论