首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年7月14日 星期一 3:34pm

玩转 LangChain:从文档加载到高效问答系统构建的全程实战

  • 25-04-25 05:40
  • 3614
  • 7483
blog.csdn.net

系列文章目录

基础篇

01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南
02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖
03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南
04-玩转 LangChain:从文档加载到高效问答系统构建的全程实战
05-玩转 LangChain:深度评估问答系统的三种高效方法(示例生成、手动评估与LLM辅助评估)
06-从 0 到 1 掌握 LangChain Agents:自定义工具 + LLM 打造智能工作流!

实战篇


文章目录

  • 系列文章目录
  • 前言
  • 一、LangChain 环境搭建与初始配置
    • 1.1 安装依赖
    • 1.2 环境变量加载
      • 1.2.1 具体步骤
      • 1.2.2 注意事项
    • 1.3 初始化模型客户端
  • 二、创建 Q&A 系统
    • 2.1 准备文档数据
      • 2.1.1 加载文档
      • 2.1.2 查看加载的文档
    • 2.2 创建向量索引
      • 2.2.1 创建向量存储索引
    • 2.3 查询和检索文档
      • 2.3.1 输出检索结果
    • 2.4 创建问答链
      • 2.4.1 初始化 LLM 模型
      • 2.4.2 创建问答系统
      • 2.4.3 执行查询并生成回答
      • 2.4.4 显示回答
    • 2.5 完整代码示例
  • 三、深入理解 LangChain:问答系统中的向量存储与检索
    • 3.1 向量存储概述
      • 3.1.1 向量嵌入(Embedding)
      • 3.1.2 向量存储
      • 3.1.3 相似性搜索
    • 3.2 构建检索器
      • 3.2.1 创建检索器
      • 3.2.2 使用检索器
      • 3.2.3 检索器优化
    • 3.3 问答链的实现
      • 3.3.1 使用问答链
      • 3.3.2 输出格式化
    • 3.4 常见问题与解决方案
      • 3.4.1 文档检索不准确怎么办?
      • 3.4.2 如何处理大型文档集?
  • 四、总结


前言

在人工智能技术快速发展的背景下,大语言模型(LLM)的应用场景越来越广泛,例如自动化文本生成、智能问答系统、知识提取等。然而,如何高效地与这些大模型交互,成为开发者面临的一大挑战。LangChain正是为解决这一问题而生的。

LangChain 是一个开源框架,旨在帮助开发者更便捷地与大语言模型(如 OpenAI 的 GPT 系列、阿里云通义千问 Qwen)进行交互。通过 LangChain,开发者可以轻松整合模型调用、Prompt 模板管理、复杂任务链条设计以及输出解析等功能,大幅提升开发效率和应用的可靠性。

LangChain 的核心模块

LangChain 由以下核心模块组成,每个模块都有其特定的功能:

  1. Model(模型)

    • 提供与大语言模型交互的接口,例如 OpenAI、阿里云等的 LLM。
    • 开发者可以轻松配置 API 调用和模型参数。
  2. Prompt(提示词)

    • 提供动态提示词模板管理功能,支持变量插值、Prompt 优化。
    • 适用于创建灵活且高效的模型交互任务。
  3. Chains(链条)

    • 用于将多个任务步骤组合成一个链条,例如多次调用模型完成复杂的推理任务。
    • 支持模块化设计,便于维护和扩展。
  4. Memory(记忆)

    • 提供上下文记忆功能,可以让模型在多轮对话中记住用户的输入和历史对话内容。
    • 适合构建长时间、多轮交互的对话系统。
  5. Output Parsers(输出解析器)

    • 解析模型的返回结果,例如将文本解析为 JSON 结构,便于后续处理。
    • 特别适用于信息提取、分类任务等。
  6. Agents(代理)

    • 集成多种工具(如 API、数据库、文件系统)与模型交互,使模型能够动态调用外部资源完成复杂任务。
    • 适合构建更智能化的自动化工作流。

LangChain 的应用场景

LangChain 的灵活性和模块化设计使其广泛适用于以下场景:

  • 文本生成与翻译:例如生成新闻稿、调整语气风格、翻译专业文档。
  • 智能问答与知识库:构建基于文档、数据库的知识问答系统。
  • 信息提取与分析:从非结构化文本中提取关键信息,例如用户评论分析、商业报告解析。
  • 对话系统与聊天机器人:利用记忆模块支持上下文多轮对话,实现类似 ChatGPT 的应用。
  • 自动化工作流:通过 Agents 模块集成外部工具,完成复杂的任务链,例如自动处理订单或执行 API 查询。

本文主题

本文将重点介绍如何使用 LangChain 实现 基于文档的问答系统。通过实际的代码示例,您将学习如何使用 LangChain 加载文档、构建查询系统、使用向量搜索进行文档检索、以及通过模型对查询进行总结和处理。

通过阅读本文,你将学会:

  1. 如何加载文档并准备好查询数据。
  2. 如何使用 向量存储(Vectorstore) 和 检索模型(Retriever) 进行高效的文档检索。
  3. 如何通过 LangChain 中的 QA Chain 和 LLM 模型 生成详细的响应。
  4. 如何格式化和展示查询结果,提升用户体验。

一、LangChain 环境搭建与初始配置

在开始构建 LangChain 应用之前,需要完成基础环境的搭建和配置。

1.1 安装依赖

在项目环境中安装必要的 Python 包:

pip install langchain langchain-community langchain_openai python-dotenv openai docarray langchain-huggingface
  • 1

这些依赖包含了 LangChain 框架、环境变量管理工具 python-dotenv 和与 OpenAI 模型交互的接口。

1.2 环境变量加载

为了保护敏感信息(如 API Key 和 API URL),建议将这些信息存储在项目根目录下的一个名为 .env 的文件中。这样可以避免将敏感信息直接暴露在代码中,同时方便环境的统一配置。

1.2.1 具体步骤

  1. 创建 .env 文件
    在项目根目录下创建一个名为 .env 的文件。注意,这个文件不需要任何扩展名。
    如果使用版本控制(如 Git),记得将 .env 文件添加到 .gitignore 中,避免敏感信息被提交到代码仓库。

  2. 编写 .env 文件内容
    .env 文件的内容采用键值对的形式,每行一个键值对,格式如下:

阿里云通义千问(Qwen)API 配置
ALIYUN_API_KEY=你的阿里云API密钥
ALIYUN_API_URL=你的阿里云API地址,例如:https://dashscope.aliyuncs.com/compatible-mode/v1

DeepSeek API 配置
DEEPSEEK_API_KEY=你的DeepSeek API密钥
DEEPSEEK_API_URL=你的DeepSeek API地址,例如:https://api.deepseek.com

OpenAI API 配置
OPENAI_API_KEY=你的OpenAI API密钥
OPENAI_API_URL=https://api.openai.com/v1

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 键名:ALIYUN_API_KEY 和 ALIYUN_API_URL 是阿里云 API 的密钥和访问地址;DEEPSEEK_API_KEY 和 DEEPSEEK_API_URL 是DeepSeek API 的密钥和地址;OPENAI_API_KEY 和 OPENAI_API_URL 是OpenAI API 的密钥和地址。
  • 值:具体的密钥和 URL 需要根据实际情况替换为你自己的值。
  1. 在代码中加载 .env 文件
    使用 python-dotenv 模块加载 .env 文件中的内容到 Python 程序中。示例如下:
   import os
   from dotenv import load_dotenv

   # 加载 .env 文件中的环境变量
   load_dotenv()

   # 获取环境变量的值
   api_key = os.getenv("ALIYUN_API_KEY")
   base_url = os.getenv("ALIYUN_API_URL")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.2.2 注意事项

  • .env 文件应放在项目根目录下,与主代码文件(如 main.py)处于同一级目录。这样 load_dotenv() 可以自动找到 .env 文件。
  • 在使用其他环境变量(如 DEEPSEEK_API_KEY 和 DEEPSEEK_API_URL)时,直接通过 os.getenv("<变量名>") 访问即可。
  • 确保 .env 文件已正确加载。如果程序中获取不到变量值,请检查文件路径和格式是否正确。

通过这种方式,可以在保护敏感信息的同时,方便多环境配置和管理。

1.3 初始化模型客户端

使用 LangChain 提供的 ChatOpenAI,连接阿里云通义千问模型(Qwen):

from langchain_openai import ChatOpenAI # type: ignore

llm = ChatOpenAI(
    openai_api_key=api_key,
    model_name="qwen-plus",
    base_url=base_url
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

至此,环境已经完成初始化,可以开始与模型交互。


二、创建 Q&A 系统

在本节中,将展示如何使用 LangChain 创建一个基于文档的问答系统。通过此系统,用户可以输入查询,系统能够从预先加载的文档中提取相关信息,并根据需求生成回答。利用 LangChain 中的核心模块

注:本文转载自blog.csdn.net的的文章"https://blog.csdn.net/Kiradzy/article/details/145277111"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top