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

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.xdnf.cn/news/1548.html

相关文章:

  • 审计效率升级!快速匹配Excel报表项目对应的Word附注序号
  • 文字均分的css
  • 【多源01BFS】Codeforce:Three States
  • pnpm install报错:此系统上禁止运行脚本
  • 12N60-ASEMI无人机专用功率器件12N60
  • 【mdlib】0 全面介绍 mdlib - Rust 实现的 Markdown 工具集
  • CVE-2024-23897-Jenkins 2.441之前版本存在任意文件读取漏洞
  • Pikachu靶场-File Inclusion
  • 雪花算法生成int64,在前端js的精度问题
  • 【产品经理从0到1】原型及Axure介绍
  • Python协程详解:从基础到实战
  • Kafka消息可视化工具Offset Explorer
  • 云原生之认识DDD
  • 新型恶意软件采用独特混淆技术劫持Docker镜像
  • win11什么都不动之后一段时间黑屏桌面无法显示,但鼠标仍可移动,得要熄屏之后才能进入的四种解决方法
  • Kotlin基础知识全面解析(下)
  • java IO流
  • 【Linux内核】内核中的中断管理
  • 中篇:深入剖析 L2CAP 与 ATT 协议模块(约5000字)
  • 程序员鱼皮最新项目-----AI超级智能体教程(一)
  • Bytebase 取得 SOC 2 Type 1 认证
  • Kafka的ISR机制是什么?如何保证数据一致性?
  • 【金仓数据库征文】加速数字化转型:金仓数据库在金融与能源领域强势崛起
  • 【计算机视觉】CV实战项目- 深度解析FaceAI:一款全能的人脸检测与图像处理工具库
  • Cadence 建立复合原理图封装时怎么切换页面
  • 【数据可视化-29】食物营养成分数据可视化分析
  • 深度解析 LangChain、ReAct、ReROO 架构及其在 AI Agent 中的应用
  • Vue3 中 computed的详细用法
  • 金融软件测试有哪些注意事项?专业第三方软件测试服务机构分享
  • 【bug修复】一次诡异的接口数据显示 bug 排查之旅