2026/4/22 0:57:31
网站建设
项目流程
平度做网站公司,怎样编辑网站,公司资质介绍模板,跨境电商erp选哪个好系列文章目录
langchain1.0学习环境搭建helloworld langchain1.0调用deepseek-api 文章目录系列文章目录前言一、读取pdf二、分割文本三、向量化四、文本段/向量存储总结前言
本文介绍了使用langchain1.0读取pdf#xff0c;分割文本#xff0c;完成向量化转换并存储到向量库…系列文章目录langchain1.0学习环境搭建helloworldlangchain1.0调用deepseek-api文章目录系列文章目录前言一、读取pdf二、分割文本三、向量化四、文本段/向量存储总结前言本文介绍了使用langchain1.0读取pdf分割文本完成向量化转换并存储到向量库的过程一、读取pdf1.使用python读取pdf需要安装pypdf在cmd激活conda虚拟环境后执行pip install pypdf2.需要在项目目录下准备一个pdf文件作为练习不要使用太大文件# 1. 读取pdf按照页来管理DocumentList[Document]fromlangchain_community.document_loadersimportPyPDFLoader file_path成人肥胖食养指南.pdf# 文件路径loaderPyPDFLoader(file_path)docsloader.load()print(len(docs))# 69 页print(type(docs[0]))# class langchain_core.documents.base.Documentprint(docs[0])# page_content成人肥胖食养指南# 征求意见稿# 成人肥胖食养指南专家工作组# 2023 年 12 月11 日# metadata{# producer: ,# creator: WPS 文字,# creationdate: 2023-12-12T10:22:2302:22,# author: 袁帆,# comments: ,# company: ,# keywords: ,# moddate: 2023-12-12T10:22:2302:22,# sourcemodified: D:202312121022230222,# subject: ,# title: ,# trapped: False,# source: 成人肥胖食养指南.pdf,# total_pages: 69,# page: 0,# page_label: 1# }二、分割文本# 2. 分割文本文本段chunk, Document, List[Document]fromlangchain_text_splittersimportRecursiveCharacterTextSplitter text_splitterRecursiveCharacterTextSplitter(chunk_size1000,chunk_overlap200,add_start_indexTrue)all_splitstext_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:2302:22,# author: 袁帆,# comments: ,# company: ,# keywords: ,# moddate: 2023-12-12T10:22:2302:22,# sourcemodified: D:202312121022230222,# subject: ,# title: ,# trapped: False,# source: 成人肥胖食养指南.pdf,# total_pages: 69,# page: 0,# page_label: 1,# start_index: 0# }三、向量化# 3. 向量化文本段 向量需要嵌入模型来辅助fromlangchain_ollamaimportOllamaEmbeddings embeddingOllamaEmbeddings(modelnomic-embed-text)vector_0embedding.embed_query(all_splits[0].page_content)print(len(vector_0))# 768,长度跟大模型有关固定长度print(vector_0)# 768个浮点数组成的list四、文本段/向量存储# 4.文本段/向量存储fromlangchain_chromaimportChroma vector_storeChroma(collection_nameexample_collection,embedding_functionembedding,persist_directory./chroma_langchain_db)idsvector_store.add_documents(documentsall_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按照页来管理DocumentList[Document]fromlangchain_community.document_loadersimportPyPDFLoader file_path成人肥胖食养指南.pdfloaderPyPDFLoader(file_path)docsloader.load()print(len(docs))# 69 页print(type(docs[0]))# class langchain_core.documents.base.Documentprint(docs[0])# page_content成人肥胖食养指南# 征求意见稿# 成人肥胖食养指南专家工作组# 2023 年 12 月11 日# metadata{# producer: ,# creator: WPS 文字,# creationdate: 2023-12-12T10:22:2302:22,# author: 袁帆,# comments: ,# company: ,# keywords: ,# moddate: 2023-12-12T10:22:2302:22,# sourcemodified: D:202312121022230222,# subject: ,# title: ,# trapped: False,# source: 成人肥胖食养指南.pdf,# total_pages: 69,# page: 0,# page_label: 1# }# 2. 分割文本文本段chunk, Document, List[Document]fromlangchain_text_splittersimportRecursiveCharacterTextSplitter text_splitterRecursiveCharacterTextSplitter(chunk_size1000,chunk_overlap200,add_start_indexTrue)all_splitstext_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:2302:22,# author: 袁帆,# comments: ,# company: ,# keywords: ,# moddate: 2023-12-12T10:22:2302:22,# sourcemodified: D:202312121022230222,# subject: ,# title: ,# trapped: False,# source: 成人肥胖食养指南.pdf,# total_pages: 69,# page: 0,# page_label: 1,# start_index: 0# }# 3. 向量化文本段 向量需要嵌入模型来辅助fromlangchain_ollamaimportOllamaEmbeddings embeddingOllamaEmbeddings(modelnomic-embed-text)# vector_0 embedding.embed_query(all_splits[0].page_content)# print(len(vector_0)) # 768,长度跟大模型有关固定长度# print(vector_0)# 4.文本段/向量存储fromlangchain_chromaimportChroma vector_storeChroma(collection_nameexample_collection,embedding_functionembedding,persist_directory./chroma_langchain_db)idsvector_store.add_documents(documentsall_splits)print(len(ids))print(ids)