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.pswp.cn/news/903234.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903234.shtml
英文地址,請注明出處:http://en.pswp.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…