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

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能够成功启动。

相关文章:

  • 问道数码兽 怀旧剧情回合手游源码搭建教程(反查重优化版)
  • 前缀和-724.寻找数组的中心下标-力扣(LeetCode)
  • OpenAI图像生成gpt-image-1登场,开启创意新可能
  • GPT-4o最新图像生成完全指南:10大应用场景与提示词模板
  • 【Vue】TypeScript与Vue3集成
  • Java学习手册:JSON 数据格式基础知识
  • 1Panel+Halo快速部署:简化服务器管理与网站搭建流程探索
  • 并发设计模式实战系列(6):读写锁
  • 立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
  • 设计仿真 | Adams回调函数功能解析
  • 上岸率85%+,25西电先进材料与纳米科技学院(考研录取情况)
  • 通过阿里云Milvus与通义千问VL大模型,快速实现多模态搜索
  • ARINC818协议一些说明综述
  • QMT学习课程Day1
  • 针对密码学的 EM 侧信道攻击
  • OpenCV 图形API(62)特征检测-----在图像中查找最显著的角点函数goodFeaturesToTrack()
  • day36图像处理OpenCV
  • mfc学习(一)
  • 处理任务“无需等待”:集成RabbitMQ实现异步通信与系统解耦
  • Python 一等函数(函数内省)
  • 今年五一,贵州一脸“爆相”
  • 上海黄浦一季度实到外资总量全市第二,同比增速领先全市
  • 质与量齐升、快与稳并举,专家解读上海一季度经济数据
  • 世界读书日|阅读在上海
  • 华天酒店:2024年归母净亏损约1.81亿元,已连续亏损3年
  • 聚焦客户真实需求,平安人寿重磅推出“添平安”保险+服务解决方案