Pgvector+R2R搭建RAG知识库

背景

R2R是一个采用Python编写的开源AI RAG框架项目,与PostgreSQL技术栈集成度高,运行需求资源少(主要是本人的Macbook air m1内存只有8G)的特点,对部署本地私有化化AI RAG应用友好。

Resource Recommendations

When running R2R, we recommend:

  • At least 4 vCPU cores
  • 8+GB of RAM (16GB preferred)
  • 50gb + 4x raw data size (size of data to be ingested after converting to TXT) of disk space

安装R2R light

First, install the R2R CLI with the additional light dependencies:

hbu@Pauls-MacBook-Air dragon-flight % pip install 'r2r[core,ingestion-bundle]'

The core and ingestion-bundle dependencies, combined with a Postgres database, provide the necessary components to deploy a user-facing R2R application into production.
If you need advanced features like orchestration or parsing with Unstructured.io then refer to the full installation .

Ref: Configure Postgres database in R2R

环境设置

主要是向量数据库

R2R requires connections to various services. Set up the following environment variables based on your needs:

 # Set Postgres+pgvector settingsexport R2R_POSTGRES_USER=r2rexport R2R_POSTGRES_PASSWORD="*********"export R2R_POSTGRES_HOST=127.0.0.1export R2R_POSTGRES_PORT=5432export R2R_POSTGRES_DBNAME=hbuexport R2R_PROJECT_NAME="dragon"export R2R_POSTGRES_MAX_CONNECTIONS=80

Postgres+pgvector

With R2R you can connect to your own instance of Postgres+pgvector or a remote cloud instance. Refer here for detailed documentation on configuring Postgres inside R2R.

ALTER USER r2r WITH PASSWORD 'password';

R2R配置

R2R uses a TOML configuration file for managing settings, which you can read about here. For local setup, we’ll use the default local_llm configuration. This can be customized to your needs by setting up a standalone project.

R2R Configure

配置内容

hbu@Pauls-MacBook-Air dragon-flight % cat local_llm.toml

[completion]
provider = "litellm"
concurrent_request_limit = 1[completion.generation_config]model = "qwen2:0.5b"temperature = 0.1top_p = 1max_tokens_to_sample = 1_024stream = falseadd_generation_kwargs = { }[database]
provider = "postgres"
user = "hbu"
password = "hbu"
host = "localhost"
port = "5432"
db_name = "hbu"
your_project_name = "dragon_flight"[embedding]
provider = "ollama"
base_model = "mxbai-embed-large"
base_dimension = 1_024
batch_size = 32
add_title_as_prefix = true
concurrent_request_limit = 32[ingestion]
excluded_parsers = [ "mp4" ]

运行R2R

本地大模型

r2r serve --config-path=./ai/R2R/local_llm.toml

检查运行状态

http://localhost:7272/v3/health

准备本地大模型

hbu@Pauls-MacBook-Air dragon-flight % ollama list
NAME                 	ID          	SIZE  	MODIFIED     
qwen2:1.5b           	f6daf2b25194	934 MB	4 months ago	
deepseek-coder:latest	3ddd2d3fc8d2	776 MB	4 months ago	
qwen2:0.5b           	6f48b936a09f	352 MB	4 months ago	
llama2-chinese:latest	cee11d703eee	3.8 GB	4 months ago	
hbu@Pauls-MacBook-Air dragon-flight % ollama run qwen2:0.5b 
>>> Send a message (/? for help)

检查向量数据库postgres


hbu=# \dn架构模式列表名称        |      拥有者       
-------------------+-------------------dragon            | hbudragon-flight     | hbupublic            | pg_database_ownerr2r_dragon_flight | hbu
(4 行记录)hbu=# \dn+架构模式列表名称        |      拥有者       |                存取权限                |          描述          
-------------------+-------------------+----------------------------------------+------------------------dragon            | hbu               |                                        | dragon-flight     | hbu               |                                        | public            | pg_database_owner | pg_database_owner=UC/pg_database_owner+| standard public schema|                   | =U/pg_database_owner                   | r2r_dragon_flight | hbu               |                                        | 
(4 行记录)

导入Samples数据

导入数据

#  R2R toml配置文件问题,导致数据导入失败
hbu@Pauls-MacBook-Air dragon-flight % r2r documents create-samples
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pydantic/_internal/_config.py:345: UserWarning: Valid config keys have changed in V2:
* 'fields' has been removedwarnings.warn(message, UserWarning)
Ingesting file: /var/folders/mh/l6_b7c0x7m3bq41r5m25snqc0000gn/T/tmpglpon8br_pg_essay_3.html
Request failed: [Errno 8] nodename nor servname provided, or not known## 采用dragon-flight/ai/R2R/alpha_llm.toml,启动R2R服务,导入数据成功
hbu@Pauls-MacBook-Air R2R % r2r documents create py/core/examples/data/got.txt      
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pydantic/_internal/_config.py:345: UserWarning: Valid config keys have changed in V2:
* 'fields' has been removedwarnings.warn(message, UserWarning)
Processing file 1/1: py/core/examples/data/got.txt
{"results": {"message": "Document created and ingested successfully.","task_id": null,"document_id": "6e134818-b245-571d-8073-6581c0a175d8"}
}
----------------------------------------
Time taken: 27.58 secondsProcessed 1 files successfully.

备注:验证导入数据仍存在问题,主要表现为部分导入数据不成功。

问题与方案

1、R22配置文件中LLM模型选择问题?

目前只有事例中的模型,支持导入,配置文件需要参考官方提供的信息,其中配置信息如dragon-flight/ai/R2R/alpha_llm.toml能够成功启动。

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

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

相关文章

go中redis使用的简单介绍

目录 一、Redis 简介 二、Go中Redis的使用 1. 安装Go Redis包 2. 单机模式 连接示例 3. 哨兵模式 依赖 连接示例 三、Redis集群 1. 集群模式 集群部署 部署结构 使用redis-cli创建集群 连接示例 四、常用数据结构与操作 1. 字符串(String&#xff0…

北京工业大学25计专上岸经验分享

1.个人情况介绍 本科就读于河北双非,专业为计算机科学与技术,四级三次498,六级两次460,拿过几次校级奖学金,竞赛经历有蓝桥杯国三、数学竞赛省二。本科成绩排名靠前,保研保7排8,遗憾选择考研继…

在 Ubuntu 24.04 系统上安装和管理 Nginx

1、安装Nginx 在Ubuntu 24.04系统上安装Nginx,可以按照下面的步骤进行: 1.1、 更新系统软件包列表 在安装新软件之前,需要先更新系统的软件包列表,确保获取到最新的软件包信息。打开终端,执行以下命令: …

HarmonyOS4+NEXT星河版入门与项目实战(26)-----版本控制与代码托管

引言 随着移动应用开发技术的不断进步,华为推出的鸿蒙操作系统(HarmonyOS)以及其配套的集成开发环境DevEco Studio逐渐成为开发者关注的焦点。对于新手开发者来说,掌握版本控制和代码托管不仅是提高工作效率的关键,也是团队协作的重要基础。本文将介绍如何在使用DevEco S…

利用Arcgis自己绘制shp文件

1.选择自己想要创建的shp文件的位置 我是直接创建在连接文件夹中 2.右键-新建-shp 3.设置名称、要素类型、空间参考 4、点击创建要素 5、右侧选择图层、创建面 6、开始绘制,双击任意位置结束绘制 之后可以改一下shp文件的名字

【C/C++】深入理解指针(六)

文章目录 深入理解指针(六)1.sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof和strlen的对⽐ 2.数组和指针笔试题解析2.1 ⼀维数组2.2 字符数组代码1:代码2:代码3:代码4:代码5:代码6: 2.3 ⼆维数组 3.…

探索大语言模型(LLM):语言模型从海量文本中无师自通

文章目录 引言:当语言模型学会“自己教自己”一、自监督学习:从“无标签”中挖掘“有监督”信号二、语言模型的自监督训练范式:两大经典路径1. 掩码语言模型(Masked Language Modeling, MLM)——以BERT为例2. 自回归语…

2025.5.4机器学习笔记:PINN文献阅读

2025.5.4周报 文献阅读题目信息摘要创新点网络架构实验结论不足以及展望 文献阅读 题目信息 题目: Physics-Informed Neural Network Approach for Solving the One-Dimensional Unsteady Shallow-Water Equations in Riverine Systems期刊: Journal o…

Unity Post Processing 小记 【使用泛光实现灯光亮度效果】

一、前言 本篇适用于Unity 2018 - 2019及以上版本,以默认渲染管线为例。文章内容源于个人研究尝试与网络资料收集,可能存在不准确之处。初衷是因新版本制作时老的Bloom插件失效,经研究后分享开启Bloom效果的方法。若在项目中使用Post Proces…

牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记3-地图基本操作与实战案例

目录 一、开发环境与框架搭建 二、地图数据加载与文档管理 1. 加载地图文档(MXD) 2. 动态添加数据源 三、地图浏览与交互操作 1. 基础导航功能 2. 书签管理 3. 量测功能 四、要素选择与属性查询 1. 属性查询 2. 空间查询 五、视图同步与鹰眼…

Qt指ModbusTcp协议的使用

Modbus 是一套通信“语言”(协议),而 RS485 / RS232 / TCP 是通信“管道”(物理接口)。 编写modubusTcp程序,避免不了调试,首先用到的两个工具助手 poll是主机,slave是从机。主机也就是发送数据…

探索大语言模型(LLM):自监督学习——从数据内在规律中解锁AI的“自学”密码

文章目录 自监督学习:从数据内在规律中解锁AI的“自学”密码一、自监督学习的技术内核:用数据“自问自答”1. 语言建模:预测下一个单词2. 掩码语言模型(MLM):填补文本空缺3. 句子顺序预测(SOP&a…

CentOS7.9安装Python 3.10.11并包含OpenSSL1.1.1t

1. 安装编译 Python 所需的依赖包 yum -y install gcc make zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel wget2. 安装 OpenSSL 1.1.1 或更新版本 (自定义路径安装的 OpenSSL 1.1.1 不会影响系统原有的…

qt事件过滤与传递机制

当点击 QLabel 时,正常情况下并不会直接触发 MyWidget 的 mousePressEvent 函数,原因在于事件的传递机制和事件过滤器的存在。下面详细分析这个过程: 事件传递机制 在 Qt 里,事件的传递是从子控件往父控件冒泡的。不过&#xff…

ubuntu 安装ollama后,如何让外网访问?

官网下载linux版本:https://ollama.com/download/linux 1、一键安装和运行 curl -fsSL https://ollama.com/install.sh | sh 2、下载和启动deepseek-r1大模型 ollama run deepseek-r1 这种方式的ollama是systemd形式的服务,会随即启动。默认开启了 …

kotlin与MVVM结合使用总结(三)

1. MVVM 架构详细介绍及源码层面理解 整体架构 MVVM(Model - View - ViewModel)架构是为了解决视图和数据模型之间的耦合问题而设计的。它通过引入 ViewModel 作为中间层,实现了视图和数据的分离,提高了代码的可维护性和可测试性…

A系统使用iframe嵌套B系统时登录跨域问题!

我这边两个项目都是独立的,问题是做了跨域配置之后点击登录接口调用成功但是页面没有跳转进去 显示以下报错 这个错误明确指出了问题的核心原因:由于跨站点Cookie设置未正确声明SameSiteNone,导致浏览器拦截了Cookie。这是现代浏览器&#x…

消息唯一ID算法参考

VUE // src/utils/idGenerator.js/*** 雪花算法风格的 ID 生成器**//*** 前缀 w代表web端,m代表手机端**/ const DEFAULT_PREFIX = w; const DEFAULT_TOTAL_LENGTH = 16; const CHARS

《WebGIS之Vue零基础教程》(5)计算属性与侦听器

1 计算属性 1) 什么是计算属性 :::info 计算属性就是基于现有属性计算后的属性 ::: 2) 计算属性的作用 计算属性用于对原始数据的再次加工 3) 案例 :::warning **需求** 实现如下效果 ::: 使用表达式实现 html Document 请输入一个字符串: 反转后的字符串: {{msg.split(…

洞悉 NGINX ngx_http_access_module基于 IP 的访问控制实战指南

一、模块概述 ngx_http_access_module 是 NGINX 核心模块之一,用于基于客户端 IP 地址或 UNIX 域套接字限制访问。它通过简单的 allow/deny 规则,对请求进行最先匹配原则的过滤。与基于密码(auth_basic)、子请求(auth…