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

LangChain的数据检索

LangChain的数据检索

LangChain为RAG应用程序提供了从简单到复杂的所有构建块,例如数据的获取、切分、向量化、向量存储、向量检索等模块

文档加载模板

LangChain封装了一系列类型的文档加载模块,例如PDF、CSV、HTML、JSON、Markdown、File Directory等。下面以PDF文件夹在为例看一下用法,其它类型的文档加载的用法都类似。

# pip install pypdf # pip install unstructured 开启科学上网下载 from langchain_community.document_loaders import PyPDFLoader, UnstructuredWordDocumentLoader loader = PyPDFLoader(r'PDF文件路径') page = loader.load_and_split() print(page[0].page_content) # 处理word locale = UnstructuredWordDocumentLoader(r'word文件路径') page = locale.load() print(page[0].page_content)

文档分割

LangChain提供了许多不同类型的文本切分器,具体见下表:

这里以Recursive为例展示用法。RecursiveCharacterTextSplitter是LangChain对这种文档切分方式的封装

from langchain_community.document_loaders import PyPDFLoader from langchain_text_splitters import RecursiveCharacterTextSplitter loader = PyPDFLoader("pdf文件") pages = loader.load_and_split() print(f"第0页:\n{pages[2].page_content}") # print(pages) text_splitter = RecursiveCharacterTextSplitter( chunk_size=200, chunk_overlap=100, length_function=len, separators=[''] ) # print([i.page_content for i in pages]) page_data = text_splitter.create_documents([i.page_content for i in pages]) for da in page_data: print(da.page_content) print('---', len(da.page_content))

文本向量化模型封装

LangChain对一些文本向量化模型的接口做了封装,例如OpenAI, Cohere, Hugging Face等。 向量化模型的封装提供了两种接口,一种针对文档的向量化embed_documents,一种针对句子的向量化embed_query

import os from dotenv import load_dotenv from langchain_community.embeddings import DashScopeEmbeddings load_dotenv() embeddings_model = DashScopeEmbeddings( dashscope_api_key = os.getenv("DASHSCOPE_API_KEY"), ) embeddings = embeddings_model.embed_documents( [ "这是第一段文档", "这是第二段文档", "这是第三段文档", "这是第四段文档", ] ) print(len(embeddings),len(embeddings[0]),embeddings[1])

向量存储

LangChain官方提供了三种开源、免费的可用于本地机器的向量数据库示例(chroma、FAISS、 Lance)。这里以chroma数据库为例。

import os from dotenv import load_dotenv from langchain_community.document_loaders import PyPDFLoader from langchain_community.vectorstores import Chroma from langchain_huggingface import HuggingFaceEmbeddings from langchain_text_splitters import RecursiveCharacterTextSplitter load_dotenv() # 文档解析 loader = PyPDFLoader(r'F:\dev\tl\Python\图灵大模型\day06\案例\app\day04\财务管理文档.pdf') page = loader.load() # 文档分割 text_splitter = RecursiveCharacterTextSplitter( chunk_size=200, chunk_overlap=50, length_function=len, add_start_index=True, ) page_documents = text_splitter.create_documents([i.page_content for i in page]) # 创建向量模型对象 embeddings = HuggingFaceEmbeddings(model_name=r'F:\dev\tl\LLM\loca_model\BAAI\bge-large-zh-v1___5') # 创建向量存储对象 db = Chroma.from_documents(page_documents, embeddings, persist_directory=r'./chroma_db') # 向量检索 docs = db.similarity_search("财务报表") for doc in docs: print(doc.page_content)

检索器

检索器(Retrievers) 是一个用于从文档集合中检索最相关文档或信息片段的关键组件。它们通常与向量存储(Vector Stores)结合使用,通过计算查询向量与存储中的文档向量之间的相似度来实现高效的语义搜索。简单来说,检索器帮助你找到与特定查询最相关的文档。

import os from dotenv import load_dotenv from langchain_community.vectorstores import Chroma from langchain_huggingface import HuggingFaceEmbeddings load_dotenv() # 创建向量化模型 model_name = r'F:\dev\tl\LLM\loca_model\BAAI\bge-large-zh-v1___5' embeddings = HuggingFaceEmbeddings(model_name=model_name) # 加载本地向量数据库 persist_directory = './chroma_db' db = Chroma(embedding_function=embeddings, persist_directory=persist_directory) # 创建检索器对象 retriever = db.as_retriever(search_kwargs={'k': 2}) docs = retriever.invoke("会计核算基础规范") for i in docs: print(i)
http://www.jsqmd.com/news/494955/

相关文章:

  • 北京上门收酒,闲置老酒名酒变现难?京城亚南酒业帮您一站式解决 - 品牌排行榜单
  • 用买火车票的例子讲解Java反射的作用
  • 北京上门回收洋酒,京城亚南酒业,专业鉴定,高价回收各类洋酒 - 品牌排行榜单
  • 低空智联网技术深度拆解:从通感算一体化到Agentic AI的架构演进
  • 注塑厂批次色差真相:福尔蒂工艺映射法实现ΔE<3量产稳定
  • 2026必备!全行业通用降AI率平台 千笔·降AIGC助手 VS 万方智搜AI
  • C语言核心语法(二)
  • 卡梅德生物深度解析CTAA16(人源癌相关抗原):分子机制与科研应用
  • 大型浸水试验箱内层选用SUS304不锈钢板 - 品牌推荐大师
  • 北京上门收酒哪家靠谱?京城亚南酒业,高价回收老酒名酒当场结算 - 品牌排行榜单
  • OpenAI将Sora融入ChatGPT:机遇与挑战并存
  • 2026年口碑好的建筑脚手架厂家推荐:钢管脚手架/铝合金脚手架/高空作业脚手架厂家采购参考指南 - 行业平台推荐
  • ArcGIS Pro报错:未找到所需字段,或无法正确检索
  • 数据仓库分层体系
  • TeamClaw重磅上线!国内首个专为销售团队打造的、可管理可控制的OpenClaw企业级解决方案
  • 2026年博主亲测:广州正规美业公司最新实践分享
  • 2026年质量好的工程钢管架品牌推荐:东莞搭钢管架/东莞工程钢管架/东莞施工钢管架厂家推荐与采购指南 - 行业平台推荐
  • 从传统产品经理到AI产品经理的必备指:AI产品经理高薪招聘火爆,面试必考题全解析
  • AI海报生成工具完全指南——2026年电商运营必备平台推荐
  • 爬虫对抗:ZLibrary反爬机制实战分析技术文章大纲
  • 判断一个文件最后修改时间是否超出了指定天数
  • 某厂Java面试实录:深度解析高并发秒杀系统、Redis原子扣减、分布式锁与消息可靠性
  • 电源模块纹波测试自动化方案设计与实践
  • 贪心算法的应用
  • 电网的安全稳定裕度
  • Pandas加载Avro文件
  • 计算机毕业设计springboot基于Vue框架的智能教研系统的设计与实现 基于SpringBoot与Vue3的数字化教学研究协同平台 前后端分离架构下的智慧教育教研管理系统
  • 2026服装进销存系统推荐:别再只看价格了,看这3点就够
  • 拒绝晕车!从基础到进阶,一文彻底理清C语言指针与数组组合
  • 表格全选功能JavaScript实现深度解析