Python LangChain RAG从入门到项目实战09.:LangChain 中的 Retriever(检索器)

部署运行你感兴趣的模型镜像

LangChain 中的 Retriever(检索器)

相关文章:

Python LangChain RAG从入门到项目实战10.:质量评价指标体系

在 LangChain 中,Retriever(检索器) 是一个核心组件,专门负责从知识库中检索与用户查询相关的信息。它的主要作用是根据输入的问题或查询,从大量文档中找到最相关的片段,为后续的问答或生成任务提供上下文。

在这里插入图片描述

1.Retriever 的主要功能

  1. 相似性检索:基于语义相似度找到与查询最相关的文档片段
  2. 关键字检索:基于关键词匹配找到相关文档
  3. 混合检索:结合多种检索策略提高检索质量
  4. 过滤与排序:对检索结果进行筛选和排序,返回最相关的内容

2.Retriever 的工作原理

典型的 Retriever 工作流程:

  1. 接收用户查询/问题
  2. 将查询转换为向量表示(使用嵌入模型)
  3. 在向量数据库中搜索相似向量
  4. 返回最相关的文档片段

3.Retriever 的类型

LangChain 支持多种类型的 Retriever:

  1. 向量存储检索器(VectorStore Retriever)

    • 基于向量相似度进行检索
    • 示例:Chroma、FAISS、Pinecone 等向量数据库
  2. 关键字检索器(Keyword-Based Retriever)

    • 基于传统关键词匹配
    • 示例:TF-IDF、BM25
  3. 集成检索器(Ensemble Retriever)

    • 结合多种检索方法的结果
    • 提高检索的召回率和准确率
  4. 上下文压缩检索器(Contextual Compression Retriever)

    • 对检索到的文档进行压缩,只保留相关部分
    • 减少不必要信息的传输

4.在代码中的使用示例

from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OllamaEmbeddings

# 创建向量数据库
vectorstore = Chroma(
    persist_directory="./chroma_db",
    embedding_function=OllamaEmbeddings(model="nomic-embed-text")
)

# 创建检索器
retriever = vectorstore.as_retriever(
    search_type="similarity",  # 检索类型:相似度
    search_kwargs={"k": 3}     # 返回最相关的3个文档
)

# 使用检索器
query = "什么是机器学习?"
relevant_docs = retriever.invoke(query)

5.检索器配置参数

常见的检索器配置选项:

  • search_type:检索类型(“similarity”、“mmr”、“similarity_score_threshold”)
  • k:返回的文档数量
  • score_threshold:相似度分数阈值
  • fetch_k:初步检索的文档数量(用于MMR)

6.Retriever 在 RAG 中的应用

在检索增强生成(RAG)系统中,Retriever 扮演着关键角色:

  1. 从大规模知识库中检索相关信息
  2. 为生成模型提供上下文
  3. 提高生成答案的准确性和相关性

7.总结

Retriever 是 LangChain 中连接用户查询与知识库的关键桥梁,它通过高效的检索算法找到最相关的信息,为大语言模型提供准确的上下文,从而生成更高质量的回答。选择合适的 Retriever 类型和配置参数对于构建高效的问答系统至关重要。

您可能感兴趣的与本文相关的镜像

Qwen3-VL-30B

Qwen3-VL-30B

图文对话
Qwen3-VL

Qwen3-VL是迄今为止 Qwen 系列中最强大的视觉-语言模型,这一代在各个方面都进行了全面升级:更优秀的文本理解和生成、更深入的视觉感知和推理、扩展的上下文长度、增强的空间和视频动态理解能力,以及更强的代理交互能力

以下是一个从 0 到 1 使用 LangChainRAG(Retrieval Augmented Generation)构建全链路实战 AI 知识库的大致教程: ### 1. 环境准备 首先需要安装必要的库,主要是 LangChain 以及相关依赖,如向量数据库(以 Chroma 为例)等。可以使用以下命令进行安装: ```bash pip install langchain chromadb openai tiktoken ``` ### 2. 数据准备 将私域文档收集整理好,这些文档可以是文本文件、CSV 文件、PDF 等多种格式。以文本文件为例,假设存在一个文件夹 `data` 存放了所有的文本文件。 ### 3. 文档加载与分割 使用 LangChain 提供的文档加载器加载文档,并将文档分割成合适的片段。以下是示例代码: ```python from langchain.document_loaders import TextLoader from langchain.text_splitter import CharacterTextSplitter # 加载文档 loader = TextLoader('data/your_text_file.txt') documents = loader.load() # 分割文档 text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) docs = text_splitter.split_documents(documents) ``` ### 4. 生成 Embedding 使用合适的 Embedding 模型将文档片段转换为向量表示。这里以 OpenAI 的 Embedding 模型为例: ```python from langchain.embeddings import OpenAIEmbeddings embeddings = OpenAIEmbeddings() ``` ### 5. 向量存储 使用向量数据库(如 Chroma)存储生成的向量,并建立索引: ```python from langchain.vectorstores import Chroma # 创建向量数据库并存储文档 db = Chroma.from_documents(docs, embeddings) ``` ### 6. 检索器配置 配置检索器,用于根据用户查询从向量数据库中检索相关文档: ```python retriever = db.as_retriever() ``` ### 7. 集成大语言模型 使用 LangChain 集成大语言模型(如 OpenAI 的 GPT),并结合检索器实现 RAG 功能: ```python from langchain.chains import RetrievalQA from langchain.llms import OpenAI # 初始化大语言模型 llm = OpenAI() # 创建 RAG 链 qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever) ``` ### 8. 测试与部署 使用以下代码测试 RAG 系统: ```python query = "你的查询问题" result = qa.run(query) print(result) ``` 根据实际需求,可以将该系统部署到服务器上,以提供服务。 ### 总结 通过以上步骤,就可以从 0 到 1 使用 LangChainRAG 构建一个全链路实战 AI 知识库。需要注意的是,在实际应用中,可能需要根据具体情况调整文档分割的参数、选择更合适的 Embedding 模型和大语言模型等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数据饕餮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值