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

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 智能体(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实例

model_path = r"E:\models\all-MiniLM-L6-v2"
model_kwargs = {'device': 'cpu'}
encode_kwargs = {'normalize_embeddings': True}

embeddings = HuggingFaceEmbeddings(
    model_name=model_path,
    model_kwargs=model_kwargs,
    encode_kwargs=encode_kwargs
)

# 使用 Chroma 创建向量数据库并存储文档向量
vectorstore = Chroma.from_documents(docs, embeddings)

2.问答优化

# 获取用户输入的问题
question = input("请输入你的问题(输入 'q' 退出):")
   if question.lower() == 'q':
      break
   else:
      if "知识库" not in question:
          response = chat_model.invoke(question)
          print("答案是:", response.content)
      else:
           answer = qa.run(question)
           print("答案是:", answer)

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

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

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
5天前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
109 1
|
5天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
300 129
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
5天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段三:自定义 Advisor 与结构化输出实现以及对话记忆持久化开发
本文介绍如何在Spring AI中自定义Advisor实现日志记录、结构化输出、对话记忆持久化及多模态开发,结合阿里云灵积模型Qwen-Plus,提升AI应用的可维护性与功能性。
263 125
AI 超级智能体全栈项目阶段三:自定义 Advisor 与结构化输出实现以及对话记忆持久化开发
|
5天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
291 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
6天前
|
人工智能 自然语言处理 数据库
超越传统搜索:RAG如何让AI更懂你
超越传统搜索:RAG如何让AI更懂你
196 109
|
6天前
|
人工智能 自然语言处理 数据库
超越关键词搜索:RAG如何让AI真正“理解”你的问题
超越关键词搜索:RAG如何让AI真正“理解”你的问题
178 102
|
6天前
|
人工智能 自然语言处理 NoSQL
超越基础提示:用RAG为你的大模型注入“新鲜记忆”
超越基础提示:用RAG为你的大模型注入“新鲜记忆”
172 101
|
5天前
|
数据采集 人工智能 文字识别
从CLIP到GPT-4V:多模态RAG背后的技术架构全揭秘
本文深入解析多模态RAG技术,涵盖其基本原理、核心组件与实践路径。通过整合文本、图像、音频等多源信息,实现跨模态检索与生成,拓展AI应用边界。内容详实,建议收藏学习。
47 2
从CLIP到GPT-4V:多模态RAG背后的技术架构全揭秘
|
7天前
|
人工智能 数据可视化 数据处理
AI智能体框架怎么选?7个主流工具详细对比解析
大语言模型需借助AI智能体实现“理解”到“行动”的跨越。本文解析主流智能体框架,从RelevanceAI、smolagents到LangGraph,涵盖技术门槛、任务复杂度、社区生态等选型关键因素,助你根据项目需求选择最合适的开发工具,构建高效、可扩展的智能系统。
195 3
AI智能体框架怎么选?7个主流工具详细对比解析
|
6天前
|
数据采集 人工智能 前端开发
Playwright与AI智能体的网页爬虫创新应用
厌倦重复测试与低效爬虫?本课程带您掌握Playwright自动化工具,并融合AI大模型构建智能体,实现网页自主分析、决策与数据提取,完成从脚本执行到智能架构的能力跃升。

热门文章

最新文章