How to use Solr as retriever in RAG

news2025/2/21 19:54:53

题意:怎样在 RAG 中使用 Solr 作为检索器

问题背景:

I want to build a RAG (Retrieval Augmented Generation) service with LangChain and for the retriever I want to use Solr. There is already a python package eurelis-langchain-solr-vectorstore where you can use Solr in combination with LangChain but how do I define server credentials? And my embedding model is already running on a server. I thought something like this but I don't know

如果您想使用 LangChain 构建一个 RAG(Retrieval Augmented Generation)服务,并且希望使用 Solr 作为检索器,同时您已经了解到有一个名为 eurelis-langchain-solr-vectorstore 的 Python 包可以将 Solr 与 LangChain 结合使用,那么接下来您需要考虑如何配置 Solr 服务器的凭据以及如何处理您的嵌入模型。

import requests
from eurelis_langchain_solr_vectorstore import Solr

embeddings_model = requests.post("http://server-insight/embeddings/")


solr = Solr(embeddings_model, core_kwargs={
        'page_content_field': 'text_t',  # field containing the text content
        'vector_field': 'vector',        # field containing the embeddings of the text content
        'core_name': 'langchain',        # core name
        'url_base': 'http://localhost:8983/solr' # base url to access solr
    })  # with custom default core configuration


retriever = solr.as_retriever()

问题解决:

For the first question: For basic credentials you can send them in the url with the login:password@ pattern

对于第一个问题:对于基本认证信息,您可以在 URL 中使用 login:password@ 模式来发送它们。

http://localhost:8983/solr => http://login:password@localhost:8983/solr

For the second one: to use your embeddings server you need to provide the Solr vector store with a class inheriting from langchain_core.embeddings.embeddings.Embeddings

对于第二种方法:要使用您的嵌入服务器,您需要向 Solr 向量存储提供一个继承自 langchain_core.embeddings.embeddings.Embeddings 的类。

it must then implement both        必须实现以下2者

def embed_documents(self, texts: List[str]) -> List[List[float]]:
    """Embed search docs."""

and

def embed_query(self, text: str) -> List[float]:
    """Embed query text."""

in both methods you can use your http://server-insight/embeddings/ endpoint.

在两种方法中,您都可以使用 http://server-insight/embeddings/ 这个端点

First method is used at indexing time and is intended to work with a list of text and return a list of embeddings

第一种方法是在索引时使用的,旨在处理一个文本列表并返回一个嵌入列表(每个文本对应的嵌入向量)

second one is used at query time and is intended to work with a single text and return a single embedding (a single list of float)

第二个是在查询时使用的,旨在处理单个文本并返回一个单一的嵌入(一个浮点数列表)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1902644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ABB机器人Socket 通讯相关指令

ABB机器人进行Socket 通讯时,首先需要安装PC Interface选项。以下对Socket 通讯时用到的相关指令做出介绍。 一、指令 1、socketdev Socketdev(socket device),套接字设备是另一台网络计算机通讯链路的处理器。用于同其他网络计…

单链表在Python中的实现技巧

更多Python学习内容:ipengtao.com 链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据域和一个指向下一个节点的指针。链表的优点是插入和删除操作非常高效,特别是在需要频繁修改数据结构的情况下。本文将详细介绍…

【深度学习】-WASB-调试说明

要改这么几个地方: 代码仓库:/Desktop/code/python_project/WASB-SBDT-main/ 篮球数据集xx_xx_11.xml只保留最后一个11.xml 并把11下直接放置11 video: 这里的东西被我改了,要以仓库为准

openssh版本升级实战(修补ssh漏洞)基于RedHat8.4版本测试--已成功升级

升级前具有漏洞的的版本 通过命令查看目前系统的ssh和sshd版本: ssh -V sshd -V 注意:由于ssh是远程连接服务器的功能,在进行下面操作升级openssh前,请打开多个连接会话保持,如升级失败,可通过已连接的会话…

Transform Data with SQL

rm -r dp-203 -f git clone https://github.com/MicrosoftLearning/dp-203-azure-data-engineer dp-203 cd dp-203/Allfiles/labs/01 ./setup.ps1 -- This is auto-generated code SELECTTOP 100 * FROMOPENROWSET(BULK https://datalakexxxxxxx.dfs.core.windows.net/fil…

hive表小练习

-- 将对应的命令写在每个步骤中 -- 1.在hive中创建数据库school create database if not exists school; -- 2.在数据库school中创建如下的表 每张表的列分隔符都是, 存储格式是textfile 创建表名为student_info, 字段为stu_id 类型为string,注释为学生id 字段为stu_name 类…

【Python学习】流程控制、函数与类详解

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 Python作为一门强大而又简洁的编程语言,提供了丰富的工具和结构来帮助开发者编写清晰、高效的代码。在本文中…

解决Linux环境Qt报“cannot find -lgl“问题

今天,在Ubuntu 18.04.6环境下,安装Qt5.14.2之后,运行一个QWidget工程,发现Qt报"cannot find -lgl"错误。     出现这种现象的原因:Qt的Path路径没有配置,缺少libqt4-dev依赖包和一些必要的组件…

算法题-回文子串和最长回文子序列

算法题-回文子串和最长回文子序列 一、647. 回文子串二、516. 最长回文子序列 一、647. 回文子串 中等 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个…

基于SpringBoot的招聘信息管理系统的详细设计和实现(源码+lw+部署文档+讲解等,欢迎咨询我!!)

文章目录 目录 文章目录 详细视频展示: 系统具体实现效果(看看我的实力) 技术栈(详细的描述提供给同学思路参考) 2.1 Java语言介绍 2.2 B/S架构 2.3 MySQL 数据库介绍 2.4 MySQL环境配置 2.5 SpringBoot框…

14-24 剑和侠客 – 预训练模型三部曲1 - 文本

在这个三部曲中,我们旨在从三个部分深入研究预训练模型:文本、图像和机器人。 我们旨在探索它们的概念、出现以及这些模型的工作原理。还将研究预训练模型的不同架构和类型。 探索哪些是最强大的,以及预训练模型和 Transformers 是否是 LLM…

【学术会议征稿】2024年工业自动化与机器人国际学术会议(IAR 2024)

2024年工业自动化与机器人国际学术会议(IAR 2024) 2024 International Conference on Industrial Automation and Robotics 2024年工业自动化与机器人国际学术会议(IAR 2024)将于2024年10月18-20日在新加坡隆重召开。会议将围绕…

提升系统稳定性:熔断、降级和限流策略详解

文章目录 前言一、熔断(Circuit Breaker)二、降级(Degradation)三、限流(Rate Limiting)四、应用案例五、小结推荐阅读 前言 随着互联网业务的快速发展,系统稳定性和高可用性成为现代分布式系统…

Linux wget报未找到命令

wget报未找到命令需要安装wget 1、下载wget安装文件,本次于华为云资源镜像下载 地址:https://mirrors.huaweicloud.com/centos-vault/7.8.2003/os/x86_64/Packages/ 2、下载后上传到安装服务器/install_package,执行命令安装 rpm -ivh /i…

idea创建的maven项目pom文件引入的坐标报红原因

如下所示 我们在引入某些依赖坐标的时候,即使点击了右上角的mavne刷新之后还是报红。 其实这是正常现象,实际上是我们的本地仓库当中没有这些依赖坐标,而idea就会通过报红来标记这些依赖来说明在我们的本地仓库是不存在的。 那有的同学就会…

JavaScript主要用途和方向

JavaScript是一种广泛使用的编程语言,可以用于开发各种类型的应用程序,包括Web应用程序、桌面应用程序、移动应用程序和游戏等。以下是博主整理的JavaScript可以做的一些事情: 1. Web开发: JavaScript是Web开发的核心语言之一&…

接口自动化测试思路和实战(5):【推荐】混合测试自动化框架(关键字+数据驱动)

混合测试自动化框架(关键字数据驱动) 关键字驱动或表驱动的测试框架 这个框架需要开发数据表和关键字。这些数据表和关键字独立于执行它们的测试自动化工具,并可以用来“驱动"待测应用程序和数据的测试脚本代码,关键字驱动测试看上去与手工测…

构建滑块组件_第 2 部分

本篇我们继续学习滑块组件,让我们把滑块组件构建的更好; ● 首先,我们想要获取组件的三个点,首先在获取到他的HTML元素 const dotContainer document.querySelector(.dots);● 接着遍历 slides 数组,并在动态创建 元…

系统测试-缺陷管理学习

目录 1、什么是缺陷 2、缺陷的类型 3、缺陷的交付物 4、缺陷报告的基本格式 1、什么是缺陷 就是软件最终的功能实现跟需求不一致的现象就是缺陷 2、缺陷的类型 做少了,做错了,做多了,做差了 3、缺陷的交付物 缺陷报告:也叫…

贝尔曼方程(Bellman Equation)

贝尔曼方程(Bellman Equation) 贝尔曼方程(Bellman Equation)是动态规划和强化学习中的核心概念,用于描述最优决策问题中的价值函数的递归关系。它为状态值函数和动作值函数提供了一个重要的递推公式,帮助我们计算每个状态或状态-动作对的预期回报。 贝尔曼方程的原理 …