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

186 阅读2分钟

上一篇介绍了基于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实例

image.png 2.问答优化

image.png 3.运行代码测试功能 增加了几个文档,从不同纬度描述了相关内容,如下图所示:

image.png

image.png

三、总结

all-MiniLM-L6-v2是低版本的模型,我只是为了本地测试。如需要可以使用更大参数的all-MiniLM-L12-v2等。不同的预训练模型在不同的任务和领域中可能表现不同,要根据具体需求选择合适的模型。后续可基于这个功能进行扩展和优化,敬请关注。