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:

shell 复制代码
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:

shell 复制代码
 # Set Postgres+pgvector settings
 export R2R_POSTGRES_USER=r2r
 export R2R_POSTGRES_PASSWORD="*********"
 export R2R_POSTGRES_HOST=127.0.0.1
 export R2R_POSTGRES_PORT=5432
 export R2R_POSTGRES_DBNAME=hbu
 export 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.

sql 复制代码
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

toml 复制代码
[completion]
provider = "litellm"
concurrent_request_limit = 1

  [completion.generation_config]
  model = "qwen2:0.5b"
  temperature = 0.1
  top_p = 1
  max_tokens_to_sample = 1_024
  stream = false
  add_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

本地大模型

shell 复制代码
r2r serve --config-path=./ai/R2R/local_llm.toml

检查运行状态

http://localhost:7272/v3/health

准备本地大模型

shell 复制代码
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

sql 复制代码
hbu=# \dn
             架构模式列表
       名称        |      拥有者       
-------------------+-------------------
 dragon            | hbu
 dragon-flight     | hbu
 public            | pg_database_owner
 r2r_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数据

导入数据

shell 复制代码
#  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 removed
  warnings.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 removed
  warnings.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 seconds

Processed 1 files successfully.

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

问题与方案

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

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

相关推荐
博睿谷IT99_10 分钟前
PostgreSQL性能优化实用技巧‌
数据库·postgresql·性能优化
灏瀚星空18 分钟前
从单机工具到协同平台:开源交互式模拟环境的技术演进之路
经验分享·笔记·python·开源·oneapi
西柚小萌新21 分钟前
【Python爬虫实战篇】--Selenium爬取Mysteel数据
开发语言·爬虫·python
天才测试猿31 分钟前
软件测试之功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
项目題供诗39 分钟前
Python类和对象二(十一)
python
HUIBUR科技41 分钟前
AI与智能能源管理:如何通过AI优化能源分配和消耗?
人工智能·ai
无心水1 小时前
基础服务系列-Jupyter Notebook 支持Java
ide·python·jupyter
结冰架构1 小时前
【AI提示词】艺人顾问
人工智能·ai·提示词·艺人·顾问
风静雪冷1 小时前
Ubuntu中选择Python虚拟环境
开发语言·python
MaYuKang1 小时前
「ES数据迁移可视化工具(Python实现)」支持7.x索引数据互传
大数据·数据库·python·mysql·elasticsearch