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

langchain1.0语义搜索(一)——建立索引

系列文章目录

langchain1.0学习环境搭建+helloworld
langchain1.0调用deepseek-api

文章目录

  • 系列文章目录
  • 前言
  • 一、读取pdf
  • 二、分割文本
  • 三、向量化
  • 四、文本段/向量存储
  • 总结

前言

本文介绍了使用langchain1.0读取pdf,分割文本,完成向量化转换并存储到向量库的过程

一、读取pdf

1.使用python读取pdf,需要安装pypdf,在cmd激活conda虚拟环境后,执行pip install pypdf
2.需要在项目目录下准备一个pdf文件(作为练习,不要使用太大文件)

# 1. 读取pdf,按照页来管理,Document,List[Document]fromlangchain_community.document_loadersimportPyPDFLoader file_path="成人肥胖食养指南.pdf"# 文件路径loader=PyPDFLoader(file_path)docs=loader.load()print(len(docs))# 69 页print(type(docs[0]))# <class 'langchain_core.documents.base.Document'>print(docs[0])# page_content='成人肥胖食养指南# (征求意见稿)# 成人肥胖食养指南专家工作组# 2023 年 12 月11 日'# metadata={# 'producer': '',# 'creator': 'WPS 文字',# 'creationdate': '2023-12-12T10:22:23+02:22',# 'author': '袁帆',# 'comments': '',# 'company': '',# 'keywords': '',# 'moddate': '2023-12-12T10:22:23+02:22',# 'sourcemodified': "D:20231212102223+02'22'",# 'subject': '',# 'title': '',# 'trapped': 'False',# 'source': '成人肥胖食养指南.pdf',# 'total_pages': 69,# 'page': 0,# 'page_label': '1'# }

二、分割文本

# 2. 分割文本,文本段(chunk), Document, List[Document]fromlangchain_text_splittersimportRecursiveCharacterTextSplitter text_splitter=RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=200,add_start_index=True)all_splits=text_splitter.split_documents(docs)# List[Documents]print(len(all_splits))# 89print(all_splits[0])# page_content='成人肥胖食养指南# (征求意见稿)# 成人肥胖食养指南专家工作组# 2023 年 12 月11 日'# metadata={# 'producer': '',# 'creator': 'WPS 文字',# 'creationdate': '2023-12-12T10:22:23+02:22',# 'author': '袁帆',# 'comments': '',# 'company': '',# 'keywords': '',# 'moddate': '2023-12-12T10:22:23+02:22',# 'sourcemodified': "D:20231212102223+02'22'",# 'subject': '',# 'title': '',# 'trapped': 'False',# 'source': '成人肥胖食养指南.pdf',# 'total_pages': 69,# 'page': 0,# 'page_label': '1',# 'start_index': 0# }

三、向量化

# 3. 向量化:文本段 <=> 向量,需要嵌入模型来辅助fromlangchain_ollamaimportOllamaEmbeddings embedding=OllamaEmbeddings(model="nomic-embed-text")vector_0=embedding.embed_query(all_splits[0].page_content)print(len(vector_0))# 768,长度跟大模型有关,固定长度print(vector_0)# 768个浮点数组成的list

四、文本段/向量存储

# 4.文本段/向量存储fromlangchain_chromaimportChroma vector_store=Chroma(collection_name="example_collection",embedding_function=embedding,persist_directory="./chroma_langchain_db")ids=vector_store.add_documents(documents=all_splits)print(len(ids))# 89print(ids)# ['001d7dd8-8492-4eb5-9478-bcf5a2ad4fb4', '22e22870-c5b6-417a-8f83-6cd494cf345a', '229e97b4-722e-4b5b-a13b-b544ae8d7257'...]

会在当前目录下创建chroma_langchain_db目录,并创建一个sqllite3文件以及一个包含4个bin文件的uuid名的目录


总结

完整代码如下

# 1. 读取pdf,按照页来管理,Document,List[Document]fromlangchain_community.document_loadersimportPyPDFLoader file_path="成人肥胖食养指南.pdf"loader=PyPDFLoader(file_path)docs=loader.load()print(len(docs))# 69 页print(type(docs[0]))# <class 'langchain_core.documents.base.Document'>print(docs[0])# page_content='成人肥胖食养指南# (征求意见稿)# 成人肥胖食养指南专家工作组# 2023 年 12 月11 日'# metadata={# 'producer': '',# 'creator': 'WPS 文字',# 'creationdate': '2023-12-12T10:22:23+02:22',# 'author': '袁帆',# 'comments': '',# 'company': '',# 'keywords': '',# 'moddate': '2023-12-12T10:22:23+02:22',# 'sourcemodified': "D:20231212102223+02'22'",# 'subject': '',# 'title': '',# 'trapped': 'False',# 'source': '成人肥胖食养指南.pdf',# 'total_pages': 69,# 'page': 0,# 'page_label': '1'# }# 2. 分割文本,文本段(chunk), Document, List[Document]fromlangchain_text_splittersimportRecursiveCharacterTextSplitter text_splitter=RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=200,add_start_index=True)all_splits=text_splitter.split_documents(docs)# List[Documents]print(len(all_splits))# 89print(all_splits[0])# page_content='成人肥胖食养指南# (征求意见稿)# 成人肥胖食养指南专家工作组# 2023 年 12 月11 日'# metadata={# 'producer': '',# 'creator': 'WPS 文字',# 'creationdate': '2023-12-12T10:22:23+02:22',# 'author': '袁帆',# 'comments': '',# 'company': '',# 'keywords': '',# 'moddate': '2023-12-12T10:22:23+02:22',# 'sourcemodified': "D:20231212102223+02'22'",# 'subject': '',# 'title': '',# 'trapped': 'False',# 'source': '成人肥胖食养指南.pdf',# 'total_pages': 69,# 'page': 0,# 'page_label': '1',# 'start_index': 0# }# 3. 向量化:文本段 <=> 向量,需要嵌入模型来辅助fromlangchain_ollamaimportOllamaEmbeddings embedding=OllamaEmbeddings(model="nomic-embed-text")# vector_0 = embedding.embed_query(all_splits[0].page_content)# print(len(vector_0)) # 768,长度跟大模型有关,固定长度# print(vector_0)# 4.文本段/向量存储fromlangchain_chromaimportChroma vector_store=Chroma(collection_name="example_collection",embedding_function=embedding,persist_directory="./chroma_langchain_db")ids=vector_store.add_documents(documents=all_splits)print(len(ids))print(ids)
http://www.cnnetsun.cn/news/404526.html

相关文章:

  • EducationExam考试试卷数字化:客观题主观题分别处理
  • PubLayNet布局分析集成:HunyuanOCR是否包含版面分析
  • CustomsDeclaration报关单据处理:跨境贸易效率提升工具
  • ArtGallery画廊介绍:HunyuanOCR帮助视障人士了解作品
  • 鸿蒙智选:开放生态进化论背后,从「连接」到「共生」
  • 当AI学术伙伴悄然降临:揭秘书匠策如何重塑本科生论文创作体验
  • 从“写不出来”到“逻辑自洽”:一位本科生如何借助智能科研工具悄然重塑论文写作路径
  • 当本科论文遇上智能写作伙伴:书匠策AI如何悄然改变你的学术表达路径
  • AI如何成为你本科论文的“隐形导师”?书匠策的科研辅助新体验
  • 医疗文档处理方案:利用HunyuanOCR解析病历、处方与检查报告
  • 清华镜像源同步HunyuanOCR:国内用户高速下载模型权重文件
  • 开发者必备:腾讯HunyuanOCR开源镜像在GitHub镜像网站上的获取方式
  • ozon、美客多测评必杀技:黑科技测评环境
  • OCR伦理问题思考:HunyuanOCR应如何平衡便利与安全
  • 引言:技术趋势预测的背景与意义
  • INT8量化部署教程:降低GPU显存占用的实践步骤
  • Prometheus监控接入:跟踪HunyuanOCR GPU利用率指标
  • 二维码内容提取尝试:HunyuanOCR能否解析条形码区域
  • 评价指标选取依据:HunyuanOCR官方使用的benchmark标准
  • 钉钉工作台添加OCR工具:基于HunyuanOCR的企业应用定制
  • 8.10 命名空间 作用域
  • 垂直文本识别表现:测试中文竖排文字的准确率
  • 边缘计算场景适用性:HunyuanOCR在IoT设备上的运行潜力
  • 为什么说HunyuanOCR是中小企业的OCR最佳选择?
  • 国产操作系统支持情况:统信UOS安装HunyuanOCR可行性验证
  • 解决多语种混合识别难题:HunyuanOCR的强大能力展示
  • 如何用腾讯混元OCR实现高效网页端文字识别?
  • 微信小程序对接设想:通过云函数调用HunyuanOCR接口
  • leetcode 961
  • 露天游泳池漆的优选之道:池面装饰层兼顾耐水与耐候