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

RAG知识增强系统2 - 检索器retriever

1.简介

读的环节,利用它获取最符合,最准的答案

2.使用样例

2.1 简单检索器实现
from langchain_community.document_loaders import TextLoader
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitterloader = TextLoader("test.txt",encoding="utf-8")documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)
embeddings_model = OpenAIEmbeddings(model="BAAI/bge-m3",api_key='sk-zenbqykvzngjvzeoikvxdplnxbvrjsyntpiejwdefmigzjgb',base_url="https://api.siliconflow.cn/v1",
)vectorstore = InMemoryVectorStore.from_documents(texts, embeddings_model)
retriever = vectorstore.as_retriever()
docs = retriever.invoke("deepseek是什么?")
docs

输出:

1.这里首先load test.txt这个文件,文件中含有大量的deepseek的信息

2.切分 和 实例化 嵌入模型后

3 用向量数据库 InMemoryVectorStore 存入资料

4 实例化检索器并匹配相关问题

2.2 查询重写
from langchain_community.vectorstores import FAISS
from langchain_community.document_loaders import WebBaseLoader
from langchain_openai import OpenAIEmbeddingsfrom langchain_text_splitters import RecursiveCharacterTextSplitter# Load blog post
loader = WebBaseLoader("https://python.langchain.com/docs/how_to/MultiQueryRetriever/")
data = loader.load()# Split
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
splits = text_splitter.split_documents(data)# VectorDB
vectordb = FAISS.from_documents(documents=splits, embedding=embeddings_model)
from langchain.retrievers.multi_query import MultiQueryRetriever
from langchain_deepseek import ChatDeepSeek
import os
from dotenv import load_dotenvload_dotenv()llm = ChatDeepSeek(model="deepseek-chat",temperature=0,api_key=os.getenv('DEEPSEEK_API_KEY'),api_base=os.getenv('DEEPSEEK_API_BASE')
)question = "如何让用户查询更准确?"
retriever_from_llm = MultiQueryRetriever.from_llm(retriever=vectordb.as_retriever(), llm=llm
)import logginglogging.basicConfig()
logging.getLogger("langchain.retrievers.multi_query").setLevel(logging.INFO)unique_docs = retriever_from_llm.invoke(question)
print(unique_docs)
len(unique_docs)

输出:

此处用了 FAISS向量数据库 来实现查询重写 

可以从输出结果看到 用户的问题重写成 这3个问题

  1. 有哪些方法可以提高用户查询的精准度?  '
  2.  在搜索系统中,优化用户查询准确性的策略有哪些?  
  3.  如何通过技术手段改进用户搜索的精确性?

并找到了 10个相关的文档碎片

http://www.dtcms.com/a/398886.html

相关文章:

  • 52Hz——FreeRTOS学习笔记——任务的创建
  • 百度权重排名高的网站如何用ps做网站效果图
  • 动态设计网站p2p理财网站开发要求
  • 【AI】【Java后端】RAG 实战示例:SpringBoot + 向量检索 + LLM 问答系统
  • Google Pixel 10 vs iPhone 17
  • 2种方式从springbean中获取bean实例
  • iPhone 无线充电发展历史
  • 做康复医院网站推广普通话手抄报
  • Win版 Visual Studio Code配置C++环境
  • 住房与住房建设部网站中美最新军事新闻最新消息
  • uniapp 项目打包时提示未添加videoplayer模块
  • 深入理解Roo Code中的Temperature参数
  • 四、PyTorch训练分类器教程:小张的CIFAR-10实战之旅
  • Unity-序列帧动画
  • 【每日一问】容性负载和感性负载有什么区别?
  • 做汽车保养的网站上企业信息的网站
  • 4-3〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件包含漏洞-A
  • 郑州网站建设国奥大厦南昌营销网站建设
  • 微服务项目->在线oj系统(Java-Spring)----7.0
  • Ant Design Vue Vue3 table 表头筛选重置不清空Bug
  • 【踩坑记录】PyTorch 被误装 CPU 版本导致 CUDA 丢失的解决办法(Windows + Anaconda)
  • 5个问题,帮你选择合适的API测试工具
  • 唐山做网站公司费用郑州做网站哪家好熊掌号
  • 为什么齐次线性方程组的系数行列式为零时有非零解?
  • Cursor Agent模式下面在指定的conda虚拟环境中执行python脚本
  • 福州网站建设加推广怎样把网站打包做百度小程序
  • 元宇宙的工业应用:数字工厂与智能制造
  • C语言程序设计笔记—printf的使用
  • 【UE5】使用虚幻引擎编辑器创建游戏
  • Nginx 部署及配置