当前位置: 首页 > news >正文

第四章:大模型(LLM)】06.langchain原理-(3)langchain 数据连接方法

第四章:大模型(LLM)

第六部分:langchain原理

第三节:langchain 数据连接方法


在实际的大模型应用中,LangChain 不仅仅是“问答”或“对话”,它的核心价值之一是可以将外部数据源接入大模型,让模型拥有实时、领域化的知识,而不仅依赖预训练参数中已有的信息。
这一节我们将深入讲解 LangChain 如何与不同类型的数据进行连接,包括:

  • 文本文件(TXT、Markdown 等)

  • 表格(CSV、Excel)

  • 数据库(SQL、NoSQL)

  • API 接口

  • 网络爬取数据(Web scraping)


1. 数据连接的整体思路

LangChain 的数据连接流程一般分为四个阶段:

  1. 数据加载(Loaders)

    • 使用 DocumentLoader 从本地文件、数据库、网络等读取数据。

    • 常见的有 TextLoaderCSVLoaderUnstructuredFileLoaderWebBaseLoaderSQLDatabaseLoader 等。

  2. 数据切分(Text Splitters)

    • 将长文档拆成适合模型处理的小段。

    • 常用 CharacterTextSplitterRecursiveCharacterTextSplitter

  3. 向量化(Embeddings)

    • 使用向量模型(如 OpenAI Embeddings、HuggingFace Embeddings)将文本转化为向量表示。

  4. 存储与检索(VectorStore / Retriever)

    • 将向量存入数据库(如 FAISS、Pinecone、Milvus)。

    • 检索时根据用户问题找出相似度最高的文本片段,传给 LLM 进行回答。


2. 常用数据连接方法

(1)加载本地文本文件
from langchain.document_loaders import TextLoaderloader = TextLoader("data/my_notes.txt", encoding="utf-8")
documents = loader.load()print(documents[0].page_content[:200])  # 预览前200字符
(2)加载 CSV 表格
from langchain.document_loaders import CSVLoaderloader = CSVLoader(file_path="data/dataset.csv")
documents = loader.load()
(3)连接 SQL 数据库
from langchain.document_loaders import SQLDatabaseLoader
from langchain.sql_database import SQLDatabasedb = SQLDatabase.from_uri("sqlite:///data/my_database.db")
loader = SQLDatabaseLoader(db, "SELECT * FROM users;")
documents = loader.load()
(4)从网页加载数据
from langchain.document_loaders import WebBaseLoaderloader = WebBaseLoader("https://example.com/article")
documents = loader.load()
(5)通过 API 获取数据
import requests
from langchain.docstore.document import Documentresponse = requests.get("https://api.example.com/data")
data = response.json()documents = [Document(page_content=str(data))]

3. 数据切分与向量化

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS# 切分
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs = splitter.split_documents(documents)# 向量化
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(docs, embeddings)# 检索
query = "请解释LangChain的核心组件"
results = vectorstore.similarity_search(query, k=3)
for r in results:print(r.page_content)

4. 数据连接的应用场景

  • 企业内部文档问答:连接公司内部知识库(PDF、Word、Wiki)。

  • 实时信息获取:结合 API,如股票、天气、新闻。

  • 数据库自然语言查询:用自然语言直接问数据库。

  • 学术资料检索:连接论文数据库(Arxiv、Semantic Scholar)。


5. 注意事项

  • 数据格式要尽量统一(UTF-8 编码,去掉冗余 HTML 标签)。

  • 对私有数据要注意安全(API Key、数据库密码不要硬编码)。

  • 长文本必须切分,否则会超出 LLM Token 限制。


数据连接流程图

flowchart LRA[数据源] -->|文档加载器 Loaders| B[文档数据 Documents]B -->|切分 Text Splitters| C[小段文本]C -->|向量化 Embeddings| D[向量 Vector]D -->|存储 VectorStore| E[向量数据库]E -->|相似度检索 Retriever| F[相关文本]F -->|传递给 LLM| G[生成回答]

http://www.dtcms.com/a/333480.html

相关文章:

  • kubernetes(4) 微服务
  • 前往中世纪 送修改器(Going Medieval)免安装中文版
  • AI大模型配置项
  • 【mysql数据库全部重点知识】
  • 企业级时序数据库选型指南:从传统架构向智能时序数据管理的转型之路
  • 昆仑万维重磅发布Mureka V7.5与MoE-TTS,AI音乐与语音合成再升级!
  • 嵌入式学习 day52 IMX6ULL裸机开发-I2C
  • 基于Spring Boot的智能民宿预订与游玩系统设计与实现 民宿管理系统 民宿预订系统 民宿订房系统
  • 蓝桥杯 二叉树
  • [ CSS 前端 ] 网页内容的修饰
  • linux下找到指定目录下最新日期log文件
  • liteflow
  • CSS从入门到精通完整指南
  • 【学习笔记】Java并发编程的艺术——第8章 Java中的并发工具类
  • Python工具箱系列(六十二)
  • 写作在学习中的重要性
  • 【完整源码+数据集+部署教程】脑部健康状态检测系统源码和数据集:改进yolo11-AIFI
  • 力扣top100(day04-05)--堆
  • **标题:发散创新之力,探索隐私计算的未来**隐私计算,作为当下数字化时代的热门话题,正受
  • MCP简单入门及简单操作案例(高德地图调用实现酒店查询天气查询等[Lima]示范)
  • 在执行部署脚本后,通过 ls -la 命令查看远程服务器文件时,显示的文件所有者是 games 而不是预期的 root 用户
  • 二、DOCKER常用命令
  • 最长递增子序列-dp问题+二分优化
  • Vue 侦听器(watch 与 watchEffect)全解析1
  • 【161页PPT】智慧方案企业数字化转型概述(课件)(附下载方式)
  • pcl法线估计的踩坑
  • 【GPT入门】第47课 大模型量化中 float32/float16/uint8/int4 的区别解析:从位数到应用场景
  • 《P1194 买礼物》
  • PyTorch的安装-CPU版本或者GPU安装有什么区别吗
  • 口播数字人免费API调用方案