本地大模型编程实战(23)用智能体(Agent)实现基于SQL数据构建问答系统(2)

本文将用 智能体(Agent) 实现对 SQLite 数据库的查询:用户用自然语言提出问题,智能体也用自然语言根据数据库的查询结果回答问题。 本次将分别在英文、中文环境下,使用 qwen2.5 、 MFDoom/deepseek-r1-tool-calling:7b 以及 llama3.1 做实验。 ...

二月 23, 2025 · 5 分钟 · 火云

本地大模型编程实战(22)用langchain实现基于SQL数据构建问答的系统(1)

使 LLM(大语言模型) 系统能够查询结构化数据与非结构化文本数据在性质上可能不同。后者通常生成可在向量数据库中搜索的文本,而结构化数据的方法通常是让 LLM 编写和执行 DSL(例如 SQL)中的查询。 我们将演练使用 langchain 链 ,在结构化数据库 SQlite 中的数据上创建问答系统的基本方法,该系统建立以后,我们用自然语言询问有关数据库中数据的问题并返回答案。 后面我们将基于 智能体(Agent) 实现类似功能,两者之间的主要区别在于:智能体可以根据需要多次循环查询数据库以回答问题。 实现上述功能需要以下步骤: 将问题转换为 DSL 查询:模型将用户输入转换为 SQL 查询; 执行 SQL 查询; 回答问题:模型使用查询结果响应用户输入。 使用 qwen2.5 、 deepseek 以及 llama3.1 做实验。 ...

二月 19, 2025 · 4 分钟 · 火云

本地大模型编程实战(21)支持多参数检索的RAG(Retrieval Augmented Generation,检索增强生成)(5)

在实现 RAG(Retrieval Augmented Generation,检索增强生成) 系统的时候,在检索(retrieve)知识库时通常一个参数。 本文将演练更复杂一点的情况:通过两个参数进行知识库的检索。为此会在 langgraph链 中增加一个 analyze_query 节点,它用来基于用户问题推理检索的参数。 本次构建的 LangGraph 链结构如下图: 使用 qwen2.5 、 deepseek 以及 llama3.1 做实验,用 shaw/dmeta-embedding-zh 做中文嵌入和检索。 ...

二月 18, 2025 · 3 分钟 · 火云

本地大模型编程实战(20)用langgraph和智能体实现RAG(Retrieval Augmented Generation,检索增强生成)(4)

上一篇文章我们演练了一个 用 langgraph 实现的 RAG(Retrieval Augmented Generation,检索增强生成) 系统。本文将要在此基础上,增加自动记录聊天历史的功能,另外,我们还将使用一个 Agent(智能体) 来实现几乎同样的功能,我们来一起体会一下用 langgraph 和 Agent(智能体) 实现 RAG系统 的区别。 本次构建的 LangGraph 链结构如下图: 如上图,query_or_respond 是一个条件节点,它通过能否根据用户的问题生成 工具调用(tool_calls) ,来判断是否需要检索矢量知识库:如果 工具调用 为空,则直接由大语言模型处理;否则通过 工具调用 调用 tools 进行检索。 实现类似功能的智能体结构如下图: 我们可以直观的发现:用 Agent(智能体) 实现更加简单。 使用 qwen2.5 、 deepseek 以及 llama3.1 做实验,用 shaw/dmeta-embedding-zh 做中文嵌入和检索。 ...

二月 17, 2025 · 4 分钟 · 火云

本地大模型编程实战(19)用langgraph实现RAG(Retrieval Augmented Generation,检索增强生成)(3)

上一篇文章我们演练了一个 用 langgraph 实现的 RAG(Retrieval Augmented Generation,检索增强生成) 系统。本文将要创建的系统将更加智能:如果在知识库中未找到靠谱的文档,则用 LLM(大语言模型) 自身的能力弥补。 另外,检索和生成部分增加了更多的细节控制。本次构建的 LangGraph 链如下图: 如上图,query_or_respond 是一个条件节点,它通过能否根据用户的问题生成 工具调用(tool_calls) ,来判断是否需要检索矢量知识库:如果 工具调用 为空,则直接由大语言模型处理;否则通过 工具调用 调用 tools 进行检索。 使用 qwen2.5 、 deepseek 以及 llama3.1 做实验,用 shaw/dmeta-embedding-zh 做中文嵌入和检索。 ...

二月 16, 2025 · 4 分钟 · 火云

本地大模型编程实战(18)用langgraph实现RAG(Retrieval Augmented Generation,检索增强生成)(2)

本文将使用 langgraph 实现一个简单的 RAG(Retrieval Augmented Generation,检索增强生成) 系统。 使用 qwen2.5 、 deepseek-r1 以及 llama3.1 做实验,用 shaw/dmeta-embedding-zh 做中文嵌入和检索。 ...

二月 15, 2025 · 2 分钟 · 火云

本地大模型编程实战(17)用langchain和智能体实现RAG(Retrieval Augmented Generation,检索增强生成)(1)

本文将用实际代码演练一个简单的 RAG(Retrieval Augmented Generation,检索增强生成) 系统。 使用 qwen2.5 、 deepseek-r1 以及 llama3.1 做实验,用 shaw/dmeta-embedding-zh 做中文嵌入和检索。 ...

二月 14, 2025 · 3 分钟 · 火云

本地大模型编程实战(16)在智能体中自动记录消息历史(3)

本文将基于上一篇文章完善 Agent(智能体) ,主要完善的功能有: 跟踪 Agent(智能体) 的执行过程 记录消息历史 此次我们使用 qwen2.5 做 LLM(大语言模型) 驱动 Agent(智能体) ,使用 shaw/dmeta-embedding-zh 做中文嵌入和检索。 ...

二月 13, 2025 · 4 分钟 · 火云

本地大模型编程实战(15)可以调用两个工具的智能体Agent(2)

在上一篇文章中,我们实践了如何使用 langchain 创建一个简单的 ReAct Agent(智能体),这次我们升级一下玩法:实现一个可以调用两个 工具 的智能体。 其中一个工具用户查询天气预报,另外一个工具用来查询知识库,实际上该工具实现了 RAG(Retrieval Augmented Generation,检索增强生成)。 此次我们使用 qwen2.5, llama3.1 和 deepseek 。感觉在处理中文方面,感觉 qwen2.5 比 llama3.1 要好一些。 ...

二月 12, 2025 · 4 分钟 · 火云

本地大模型编程实战(14)初探智能体Agent(1)

在前面的文章中,我们了解了 LLM(大语言模型) 如何使用 tool(工具) ,现在我们开始进一步,初探 Agent(智能体) 的玩法。 其中的 tool(工具) 用于从矢量数据库中查询信息,这种方式在 RAG(Retrieval Augmented Generation,检索增强生成) 也很常用。在这种场景中,能否准确的查询出有用信息很关键,为此我们本次将使用多种大模型进行对比演练。包括: 多语言通用 LLM: llma3.1 , deepseek-r1 , qwen2.5 专用于嵌入检索的大模型: shaw/dmeta-embedding-zh , milkey/m3e , mxbai-embed-large , nomic-embed-text , all-minilm:33m 了解 Agent(智能体) tool(工具) 与 Agent(智能体) 的区别 工具往往用于大语言模型调用其它功能,比如:搜索、数据库查询、计算等;Agent(智能体) 是一个可以使用 LLM 处理复杂任务的智能体;它通常会决定: 何时调用 tool(工具) 选择哪个工具 处理工具返回的结果 ReAct(Reasoning + Acting) ReAct(Reasoning + Acting)是一种用于 Agent(智能体) 的决策方式,它结合了推理(Reasoning)和行动(Acting),让智能体能更灵活地思考和执行任务。 简单来说,ReAct 让智能体在做事情之前,先思考一下,然后再决定下一步行动,而不是盲目执行。 ReAct 的核心思路 观察环境(Observations):获取当前任务或问题的信息。 推理(Reasoning):分析当前信息,思考如何解决问题。 执行行动(Acting):基于推理结果,采取具体的行动(比如调用工具、查询数据库、与用户交互等)。 循环执行:智能体会不断重复观察 → 推理 → 行动的过程,直到任务完成。 关于 ReAct 的更多内容,请参阅:ReACT Agent Model ...

二月 11, 2025 · 4 分钟 · 火云