使用 LangChain 掌握检索增强生成 (RAG) 的终极指南:4、逻辑路由与语义路由的实现

4. 路由

当我们拥有多个数据源,例如图形数据库(GraphDB)、PDF文档(即向量存储)时,我们可能需要根据正确的数据源回答用户查询。例如,如果用户想了解医院的评论,用户查询应重定向到包含医院评论嵌入的向量存储。另一方面,如果用户想了解医生、病人、他们访问医院的信息,用户查询可能应该发送到包含医院信息的图形数据库。因此,为了提供这样的功能,我们现在将重点放在RAG中的“路由”功能与LangChain的结合使用上。

在本节中,我们将讨论两种主要的路由技术,即逻辑路由语义路由

首先,我们导入我们的库,并创建两个向量存储,我们将用户查询重定向到这些存储。

# 导入环境变量扩展
%load_ext dotenv
%dotenv secrets/secrets.env

# 导入所需的库
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_core.output_parsers import StrOutputParser
from langchain import hub
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI, OpenAIEmbeddings

generate_vectorstores 函数用于创建向量存储,它接受一个文件路径和一个目录作为参数。这个函数首先使用 PyPDFLoader 加载PDF文件,然后使用 RecursiveCharacterTextSplitter 将文档分割成小块,最后使用 Chroma 创建向量存储,并使用 OpenAIEmbeddings 作为嵌入模型。

def generate_vectorstores(file, dir):
    # 使用PyPDFLoader加载PDF文件
    loader = PyPDFLoader(file)
    documents = loader.load()

    # 使用RecursiveCharacterTextSplitter分割文本
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hugo_Hoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值