RAG入门之数据导入

article/2025/8/4 10:01:53

LangChain 是什么

LangChain 是一个用于构建基于大语言模型(LLM)应用的开源框架。它提供了一套工具和抽象,让开发者能够轻松构建复杂的AI应用。

LangChain 的核心功能

  • 文档加载和处理:支持多种格式(PDF、文本、网页等)
  • 文本分割:将长文档切分成小块
  • 向量存储:文档向量化和相似性搜索
  • 链式调用:组合多个AI操作
  • Agent:智能代理,能够使用工具
  • RAG(检索增强生成):结合外部知识库

主要竞争对手和替代方案

1. LlamaIndex(原名 GPT Index)

# LlamaIndex 示例
from llama_index import VectorStoreIndex, SimpleDirectoryReaderdocuments = SimpleDirectoryReader('data').load_data()
index = VectorStoreIndex.from_documents(documents)

特点

  • 专注于数据索引和检索
  • 更简单的API
  • 更好的RAG性能

2. Haystack

# Haystack 示例
from haystack import Pipeline
from haystack.nodes import BM25Retriever, FARMReaderretriever = BM25Retriever(document_store=document_store)
reader = FARMReader(model_name_or_path="deepset/roberta-base-squad2")

特点

  • 企业级搜索和问答
  • 强大的NLP流水线
  • 生产环境优化

3. Semantic Kernel(微软)

// Semantic Kernel 示例 (C#)
var kernel = new KernelBuilder().WithOpenAIChatCompletionService("gpt-3.5-turbo", apiKey).Build();

特点

  • 微软开发
  • 支持多种编程语言
  • 与Azure集成良好

4. AutoGPT / GPT-Engineer

特点

  • 自主AI代理
  • 自动化任务执行
  • 代码生成专门化

5. Chroma

# Chroma 示例
import chromadb
client = chromadb.Client()
collection = client.create_collection("my_collection")

特点

  • 专注向量数据库
  • 简单易用
  • 轻量级

各框架对比

框架专长优势适用场景
LangChain全栈LLM应用生态丰富、社区活跃原型开发、复杂应用
LlamaIndex数据索引检索API简洁、RAG性能好知识库搜索
Haystack企业搜索生产级稳定性大规模部署
Semantic Kernel多语言支持微软生态集成.NET环境
Chroma向量存储轻量级、易部署简单向量搜索

选择建议

  • 初学者/原型:LangChain(生态丰富,文档全面)
  • 专注RAG:LlamaIndex(性能更好)
  • 生产环境:Haystack(稳定性强)
  • 微软技术栈:Semantic Kernel
  • 简单向量搜索:Chroma

如何使用数据加载器读取简单文本?

from langchain_community.document_loaders import TextLoaderloader = TextLoader("/Users/shuyixiao/PycharmProjects/RAGPracticalCourse/my.text")document = loader.load()print(document)

my.text文件内容

生成式AI应用工程师(高级)认证 | 阿里云博客专家 | Java应用开发职业技能等级认证 境是人非叶落处,焕景深处已向春~ 代码是我的文字,程序是我的诗篇,我不是程序员,我是诗人。大浪淘沙,去伪存真,破后而立,否极泰来。 真正的有所成,只能是慢慢来...

输出结果

/Users/shuyixiao/PycharmProjects/RAGPracticalCourse/.venv/bin/python /Users/shuyixiao/PycharmProjects/RAGPracticalCourse/testLangChain.py 
[Document(metadata={'source': '/Users/shuyixiao/PycharmProjects/RAGPracticalCourse/my.text'}, page_content='生成式AI应用工程师(高级)认证 | 阿里云博客专家 | Java应用开发职业技能等级认证 境是人非叶落处,焕景深处已向春~ 代码是我的文字,程序是我的诗篇,我不是程序员,我是诗人。大浪淘沙,去伪存真,破后而立,否极泰来。 真正的有所成,只能是慢慢来...')]进程已结束,退出代码为 0

解释一下为什么是Document对象?

Document 是 LangChain 中的标准数据结构,用于统一处理各种文档格式。它包含两个主要部分:

  1. page_content - 文档的实际内容
  2. metadata - 文档的元数据(如来源、创建时间等)

为什么使用 Document 对象?

# 统一的数据格式,便于后续处理
# 无论是文本、PDF、网页等,都统一为 Document 格

http://www.hkcw.cn/article/TtRBNFXvCF.shtml

相关文章

科研学习|科研软件——激活后的Origin导出图时突然出现了demo水印

问题:画完图在导出图形时,导出的图有demo水印,如下图。 解决方法1:右击选择以管理员身份运行。 解决方法2:找到该软件的保存路径,双击Origin64.exe

一:UML类图

类之间的关系 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 学习设计模式的第一步是看懂UML类图,类图能直观的表达类、对象之间的关系,这将有助于后续对代码的编写。 常见的类之间的关系包括:继承…

Python数学可视化——环境搭建与基础绘图

Python数学可视化——环境搭建与基础绘图 数学函数可视化入门(一次函数/三角函数) 本节将建立Python科学计算环境,并创建基础函数绘图工具,可生成一次函数和三角函数的可视化图像,同时结合物理中的匀速直线运动案例。…

mask2former训练自己的语义分割数据集

一、环境配置 1.1下载源码 mask2former: https://github.com/facebookresearch/Mask2Former/tree/maindetectron2: https://github.com/facebookresearch/detectron2下载完后,新建一个文件夹,起个名字(我起的Mask2Former-main&#xff09…

如何使用1panel部署linux网站

找到官网,尝试一下在线安装 如果在线不成功,试一下离线安装 按照指令一步步执行即可,注意换成新版本的名称即可 如果成功,你会看到这个页面 1Panel Log]: [1Panel Log]: 感谢您的耐心等待,安装已完成 [1Panel Log]:…

个人用户进行LLMs本地部署前如何自查和筛选

一、个人用户硬件自查清单(从核心到次要) 1. 显卡(GPU)——决定性因素 显存容量(关键指标): 入门级(8~12GB):可运行7B模型(4bit量化)…

java Map双列集合

单列集合:一次只能添加一个元素 双列集合:一次添加两个元素,左边的叫键(唯一的不能重复),右边叫值(可以重复),键和值一一对应。这样一对叫:键值对/键值对对象…

在IIS上无法使用PUT等请求

错误来源: chat:1 Access to XMLHttpRequest at http://101.126.139.3:11000/api/receiver/message from origin http://101.126.139.3 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 其实我的后…

FastVLM: Efficient Vision Encoding for Vision Language Models——为视觉语言模型提供高效的视觉编码

这篇文章的核心内容是介绍了一种名为 FastVLM 的新型视觉语言模型(VLM),它通过一种高效的视觉编码器 FastViTHD,在高分辨率图像输入下实现了显著的性能提升和延迟降低。以下是文章的主要研究内容总结: 1. 研究背景与动…

关于开发板连接电脑找不到CH340解决方法大全(附ch340驱动下载链接)

一、一般开发板只需要一根支持传输数据的usb线就可以,找不到就是驱动没安装,一般win11系统会自动后台安装,如果没安装需要手动 ch340驱动官网:南京沁恒微电子股份有限公司 安装还失败就用这个(安装之后重启电脑就可以了…

Flask文件处理全攻略:安全上传下载与异常处理实战

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…

机器学习有监督学习sklearn实战二:六种算法对鸢尾花(Iris)数据集进行分类和特征可视化

本项目代码在个人github链接:https://github.com/KLWU07/Machine-learning-Project-practice 六种分类算法分别为逻辑回归LR、线性判别分析LDA、K近邻KNN、决策树CART、朴素贝叶斯NB、支持向量机SVM。 一、项目代码描述 1.数据准备和分析可视化 加载鸢尾花数据集&…

Vim 支持多种编程语言编辑器

软件简介 Vim是Vi编辑器的增强版,它提供了更多的功能和快捷键。Vim是一款自由软件,它是由Bram Moolenaar在1991年创建的。Vim支持多种编程语言,包括C、C、Java、Python、Perl等等。它是一款轻量级的编辑器,可以快速打开和编辑大型…

CppCon 2014 学习:Unicode in C++

在 Unicode 出现之前,计算机使用各种 单字节编码(Single-Byte Encodings) 来表示文本。理解这些编码对于学习字符集的演变过程很有帮助,以下是关键点的解释: 什么是单字节编码(Single-Byte Encoding&#…

【计算机网络】第3章:传输层—面向连接的传输:TCP

目录 一、PPT 二、总结 TCP(传输控制协议)详解 1. 概述 核心特性: 2. TCP报文段结构 关键字段说明: 3. TCP连接管理 3.1 三次握手(建立连接) 3.2 四次挥手(终止连接) 4. 可…

python打卡 DAY 18 推断聚类后簇的类型

目录 聚类结果分析与簇类型推断学习笔记 一、聚类后分析基础流程 1.1 基本分析步骤 1.2 常用可视化工具 二、簇特征分析方法 2.1 数值型特征分析 簇中心对比 雷达图展示 2.2 类别型特征分析 频数统计 卡方检验 三、簇类型推断技术 3.1 基于统计特征的推断 关键指标…

【RocketMQ 生产者和消费者】- 生产者发送同步、异步、单向消息源码分析(2)

文章目录 1. 前言2. InvokeCallback#operationComplete3. onExceptionImpl 异常处理4. 定时任务扫描 responseTable5. 小结 本文章基于 RocketMQ 4.9.3 1. 前言 【RocketMQ】- 源码系列目录【RocketMQ 生产者消费者】- 同步、异步、单向发送消费消息【RocketMQ 生产者和消费者…

【大模型DA】Unified Language-driven Zero-shot Domain Adaptation

Motivation 本文动机在于解决现有方法对 domain-ID 和多模型的依赖问题,提出一个更实用、更通用的新设定 ULDA,使模型仅通过语言描述就能在不访问目标图像的前提下一次性适应多个未知目标域 这篇文章的方法部分提出了一个统一框架来解决Unified Language…

Tomcat 线程模型详解性能调优

1. Tomcat I/O模型详解**(了解)** 1.1 Linux I/O模型详解 I/O要解决什么问题 I/O:在计算机内存与外部设备之间拷贝数据的过程。 程序通过CPU向外部设备发出读指令,数据从外部设备拷贝至内存需要一段时间,这段时间CPU就…

Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory

文章目录 摘要Abstract1. 引言2. Mem03. graph-based Mem0参考总结 摘要 Mem0是一种针对AI智能体的长时记忆架构,旨在解决大型语言模型固定上下文窗口导致的跨会话连贯性问题。其基础版本采用两阶段处理范式:提取阶段通过结合对话摘要、近期消息序列和新…