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

langChain存储文档片段,并进行相似性检索

https://python.langchain.ac.cn/docs/how_to/document_loader_pdf/#vector-search-over-pdfs

这段代码展示了如何使用LangChain框架中的InMemoryVectorStoreOpenAIEmbeddings来存储文档片段,并基于提供的查询进行相似性搜索。下面是对每一行代码的详细解释:

1. 导入必要的模块

from langchain_core.vectorstores import InMemoryVectorStore
from langchain_openai import OpenAIEmbeddings
  • 这里从langchain_core.vectorstores模块中导入了InMemoryVectorStore类,它用于在内存中创建一个向量存储,以便对文本数据执行相似性搜索。
  • 同时从langchain_openai模块中导入了OpenAIEmbeddings类,用于生成文本的嵌入(即向量化表示),这些嵌入将被用来计算文本之间的相似度。

2. 创建并填充向量存储

vector_store = InMemoryVectorStore.from_documents(pages, OpenAIEmbeddings())
  • 使用InMemoryVectorStore.from_documents()方法创建了一个名为vector_store的实例。这个方法接受两个参数:
    • pages: 这是一个包含之前加载的PDF文档页面的对象列表(假设pages变量已经被正确初始化)。
    • OpenAIEmbeddings(): 这是用来生成文本嵌入的对象。通过调用OpenAIEmbeddings(),我们创建了一个对象,该对象可以将文本转换为向量形式,便于后续的相似性比较。
  • 此步骤的结果是将pages中的每一页转换成向量,并存储在内存中的向量数据库里。

3. 执行相似性搜索

docs = vector_store.similarity_search("What is LayoutParser?", k=2)
  • 调用了vector_store对象上的similarity_search方法,以执行基于文本的相似性搜索。
  • 参数"What is LayoutParser?"是我们要查询的问题或关键词。
  • k=2指定了返回最相似的前2个结果。这里的k值可以根据需要调整,以返回更多或更少的相关文档片段。

4. 输出搜索结果

for doc in docs:print(f'Page {doc.metadata["page"]}: {doc.page_content[:300]}\n')
  • 这段代码遍历了由similarity_search方法返回的所有文档片段(docs),并逐个打印出来。
  • 对于每个文档片段doc,它首先打印出该片段所属的PDF页码(通过访问doc.metadata["page"]获取),然后截取并显示该片段的前300个字符(doc.page_content[:300]),以便快速查看内容概览。
  • \n用于在每个文档片段输出后添加一个空行,使得输出更加清晰易读。

综上所述,这段代码演示了如何利用LangChain框架将一组文档转换为向量表示,并基于特定查询执行相似性搜索,最后展示与查询最相关的文档片段。这对于信息检索、问答系统等应用场景非常有用。

相关文章:

  • 【神经网络与深度学习】通俗易懂的介绍非凸优化问题、梯度消失、梯度爆炸、模型的收敛、模型的发散
  • GITLAB跑gradle项目 不借助maven-publish直接上传到nexus私人仓库
  • C++STL——map和set的使用
  • 使用DevEco Studio性能分析工具高效解决鸿蒙原生应用内存问题
  • 免费专业级 PDF 处理!SolidPDF OCR 识别 + 精准转换批量处理
  • 【源码+文档+调试讲解】驾校报名小程序2
  • 嵌入式开发学习日志(数据结构--顺序结构单链表)Day19
  • 在scala中sparkSQL连接masql并添加新数据
  • 分割一切(SAM) 论文阅读:Segment Anything
  • c++ std库中的文件操作学习笔记
  • QEMU模拟32位ARM实现自定义系统调用
  • CodeBuddy 中国版 Cursor 实战:Redis+MySQL双引擎驱动〈王者荣耀〉战区排行榜
  • RAG之大规模解析 PDF 文档全流程实战
  • 网络协议分析 实验四 ICMPv4与ICMPv6
  • web-ui开源程序是建立在浏览器使用的基础上,旨在使 AI 代理可以访问网站
  • MySQL 学习(八)如何打开binlog日志
  • sqli-labs靶场第四关——“)闭合
  • deepseek梳理java高级开发工程师微服务面试题
  • SQL、Oracle 和 SQL Server 的比较与分析
  • 一次讲清 FP32 / FP16 / BF16 / INT8 / INT4
  • 人民日报评外卖平台被约谈:摒弃恶性竞争,实现行业健康发展
  • 兰州大学教授安成邦加盟复旦大学中国历史地理研究所
  • 外国游客“在华扫货”热:“带空箱子到中国!”
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • 季后赛主场优势消失之谜,这事竟然要赖库里
  • 香港将展“天方奇毯”,从地毯珍品看伊斯兰艺术