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

基于langchain框架的智能PDF问答(一)创建向量数据库

首先安装langchain,安装完之后就可以开始我们的步骤了

pip install langchain

第一步

我们可以先创建一个Python文件,用于将PDF加载到我们本地的向量数据库中
一、读取文档
加载PDFX需要用到文本加载器,导入PyPDFLoader这个函数

#读取文档
from langchain.document_loaders import PyPDFLoader
##文档路径
temp_file_path = "10.19.pdf"
##解析文档
loader = PyPDFLoader(temp_file_path)
##转换文档格式
docs = loader.load()

二、文本分割
因为大语言模型通常都有输入字数限制,所以需要对文本就行切割传输,这里用到文本切割器,需要用到库中RecursiveCharacterTextSplitter这个函数

#文本切割
from langchain_text_splitters import RecursiveCharacterTextSplitter
##创建一个文本切割器
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=100,##每个文本块的大小
    chunk_overlap=50,##与前面重叠的大小
    separators=["\n", "。", "!", "?", ",", "、", ""]#分隔符
)
##使用创建的文本分割器对文本进行分割
texts = text_splitter.split_documents(docs)

三、创建嵌入模型
我这里使用的是百度千帆大模型,因为一开始注册会提供20元的卷,这里需要你自己去注册申请AK和SK
至于为什么创建的是嵌入模型,嵌入模型的主要任务是将自然语言文本转换为数字向量,使得模型能够理解和处理文本数据。
这里需要引入os(设置环境变量),QianfanEmbeddingsEndpoint(千帆嵌入模型)

#创建嵌入模型
import os
from langchain_community.embeddings import QianfanEmbeddingsEndpoint

##设置环境变量
os.environ['QIANFAN_AK'] = "你自己的AK"
os.environ['QIANFAN_SK'] = "你自己的SK"
##创建模型
embeddings_model = QianfanEmbeddingsEndpoint()

四、创建本地向量数据库,并添入向量数据
这里我用的Chroma向量数据库,相应的也需要引用这个函数Chroma

#创建本地向量数据库
from langchain.vectorstores import Chroma
##数量数据库保存位置
persist_directory = 'date'
##通过嵌入模型,创建向量数据库
vectordb = Chroma(
    embedding_function=embeddings_model,##调用刚刚创建的嵌入模型
    persist_directory=persist_directory##向量数据库保存位置
)

#将处理好的pdf数据添加到向量数据库中
vectordb.add_documents(
    documents=texts
)
# 确保持久化保存更新
vectordb.persist()

http://www.kler.cn/a/371866.html

相关文章:

  • echarts属性之xAxis
  • 【大数据】Flink + Kafka 实现通用流式数据处理详解
  • postman的脚本设置接口关联
  • 基于SSM的智能台球厅系统
  • MacOS/Macbook用户自定义字体安装教程
  • 一款专业获取 iOS 设备的 UDID 工具|一键获取iPhone iPad设备的 UDID
  • 全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验
  • ubuntu编译ffmpeg
  • 【mysql】导出导入mysql表结构或者数据
  • GPT避坑指南:如何辨别逆向、AZ、OpenAI官转
  • 使用阿里云 MQTT 服务进行消息传输的基本实践
  • 基于QT用工厂模式实现串口通信与网络通信激光器的控制
  • miRNA分析流程学习(四)/miRNA芯片数据差异分析再学习以及异常火山图可能原因解释
  • 【TEST】负载/性能测试工具 Grafana K6 (Docker 版)
  • 【系统架构设计师】案例分析预测试卷一(3道材料题)
  • 小满OKKICRM与钉钉数据集成方案解析
  • 扶贫工作数字化:SpringBoot精准扶贫系统
  • Python实现的简单时钟
  • 探索自动化数据清洗技术的前沿趋势
  • java项目使用HttpServletRequest request接参,怎么获取参数的值,怎么获取form值,怎么获取body值
  • HTML入门教程17:HTML块
  • 深度|谁在为OpenAI和Anthropic的AI编程竞赛提供“军火”?已赚得盆满钵满
  • Javaweb 实验6 JSP内置对象
  • 文心一言 VS 讯飞星火 VS chatgpt (380)-- 算法导论24.4 12题
  • Oracle 19c OCM技术培训课程深度解析
  • 刷代随有感(134):单调栈——下一个更大元素I(难点涉及哈希表与单调栈的结合)