news 2026/9/5 22:31:12

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 7:28:14

langchain1.0调用deepseek-api

系列文章目录 langchain1.0学习环境搭建helloworld langchain1.0语义搜索&#xff08;一&#xff09;——建立索引 文章目录系列文章目录准备工作在deepseek上创建API keys充值编写python代码准备工作 在deepseek上创建API keys 打开网址 https://platform.deepseek.com/api…

作者头像 李华
网站建设 2026/8/29 8:20:33

使用Prometheus监控HunyuanOCR服务状态:GPU利用率与QPS指标采集

使用Prometheus监控HunyuanOCR服务状态&#xff1a;GPU利用率与QPS指标采集 在当前AI模型大规模落地的背景下&#xff0c;一个OCR服务是否“稳定可用”&#xff0c;早已不再只是看它能不能识别出文字。真正的挑战在于&#xff1a;当并发请求突然翻倍、GPU显存开始告急、响应延…

作者头像 李华
网站建设 2026/9/1 2:08:37

HunyuanOCR模型量化方案:INT8与FP16压缩对精度影响测试

HunyuanOCR模型量化方案&#xff1a;INT8与FP16压缩对精度影响测试 在当前多模态AI快速落地的背景下&#xff0c;OCR技术正经历一场从“功能可用”到“体验极致”的转型。用户不再满足于简单的文字识别——他们需要的是在复杂文档、模糊图像甚至视频帧中稳定提取结构化信息的能…

作者头像 李华
网站建设 2026/8/24 18:45:53

GenealogyFamilyTree家谱整理:HunyuanOCR助力家族文化传承

HunyuanOCR助力家谱数字化&#xff1a;让家族记忆在AI时代重获新生 在南方某村落的老祠堂里&#xff0c;一位族长小心翼翼地翻开泛黄的族谱——纸页上的墨迹早已晕染&#xff0c;繁体字与手写行书交错&#xff0c;夹杂着几处模糊的批注。他想把这份承载百年记忆的文献传给下一代…

作者头像 李华