傳統RAG(Retrieval Augmented Generation)因為上下文理解能力不足、文檔相似性偏差等缺陷,在處理複雜關係、多跳推理和知識關聯時存在局限性。GraphRAG在傳統RAG檢索路徑的基礎上,提供了基於知識圖譜的索引、檢索、產生能力,從而提升了對複雜資料的理解與產生的品質。
功能簡介
GraphRAG支援以下功能:
索引:通過知識抽模數型,對文檔進行知識抽取,產生知識圖譜,儲存到圖分析引擎。
檢索:通過知識抽模數型,對Query進行關鍵詞提取,在AnalyticDB for PostgreSQL圖分析引擎中遍曆子圖,搜尋關聯子圖。
產生:將Query和關聯子圖上下文提交給大模型,並產生結果。
版本限制
核心版本為7.2.1.3及以上的AnalyticDB for PostgreSQL7.0版執行個體。
安裝外掛程式
核心版本為7.2.1.4及以上的AnalyticDB for PostgreSQL7.0版執行個體已自動安裝plpython3u、age和adbpg_graphrag外掛程式。您需要將ag_catalog添加到search_path,具體請參見下方安裝age外掛程式。
安裝plpython3u外掛程式(預設已安裝)。
檢查外掛程式是否安裝成功:切換到指定資料庫的public模式下,執行如下命令。
SELECT * FROM pg_extension WHERE extname = 'plpython3u';返回如下結果,表示plpython3u外掛程式已成功安裝。如未返回結果,表示指定資料庫的public模式下沒有安裝此外掛程式。
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition -------+------------+----------+--------------+----------------+------------+-----------+-------------- 14674 | plpython3u | 10 | 11 | f | 1.0 | | (1 row)安裝age外掛程式後,需要在資料庫中將ag_catalog添加到search_path,以簡化查詢。以下是兩種配置方式:
會話層級設定。
SET search_path TO "$user", public, ag_catalog;資料庫層級永久設定。
ALTER DATABASE <database_name> SET "$user", public, ag_catalog;
(可選)使用初始帳號或高許可權使用者RDS_SUPERUSER授權其他使用者使用圖外掛程式。
GRANT USAGE ON SCHEMA ag_catalog TO <username>;
安裝adbpg_graphrag外掛程式,請聯絡支援人員協助安裝此外掛程式。
adbpg_graphrag外掛程式依賴plpython3u、age外掛程式,安裝此外掛程式前請先確認依賴外掛程式完成安裝。
使用提示
模型選擇。
在模型選擇方面,阿里雲主要測試了qwen-max、qwen-plus-latest和qwen3-32b三款模型。
在回答品質方面,測試效果依次為:qwen-max > qwen-plus-latest > qwen3-32b。如需高品質輸出,推薦使用qwen-max。
在產生速度方面,測試效果依次為:qwen3-32b > qwen-plus-latest > qwen-max。如更關注響應速度,建議選擇qwen3-32b。
關於涉及圖片的文檔匯入與處理。
當前系統對包含圖片的文檔支援有限。如需匯入含圖文檔,建議使用多模態大模型(如qwen2.5-vl-72b-instruct)先將圖片解析為文本描述後再上傳。prompt指令參考如下。
你是一個專業的圖片閱讀助手,負責為下面提供的圖片產生一個詳細的解讀與全面的總結。 ---要求--- 1. 如果圖片中有模組區分,請分別抽取並儘可能多的提供每個模組詳細的細節資訊。 2. 根據以上抽取的資訊,產生針對該模組的總結。 3. 如果圖片中存在圖表,請根據圖表總結可用的細節資訊。 4. 如果圖片中存在有效表徵圖,如國旗表徵圖,象形表徵圖,隱喻表徵圖,工具表徵圖和混合表徵圖等,也需要關注表徵圖來抽取細節資訊。 5. 根據抽取的資訊,進行總結並提供有效全域資訊。 ---備忘--- 確保使用第三人稱書寫,並包含模組名稱,以便我們擁有完整的上下文。 *識別圖片中的主體語言*(佔據80%以上的語言),使用*圖片主體語言*作為輸出語言。
操作步驟
初始化GraphRAG服務
文法
SELECT adbpg_graphrag.initialize(config json);參數
adbpg_graphrag.initialize函數入參是一個JSON變數,用於配置GraphRAG服務資訊,配置參數說明如下。
參數 | 說明 |
llm_model | 用於指定GraphRAG使用的大模型,預設為qwen-max-2025-01-25。 |
llm_api_key | 調用大模型時需要使用的API Key。 |
llm_url | 大模型的API介面地址,預設使用阿里雲百鍊平台的API。 說明
|
embedding_model | 用於指定GraphRAG使用的嵌入模型,預設為text-embedding-v3。 |
language | GraphRAG使用的預設語言,預設為英語。
|
entity_types | 指定解析文檔產生知識圖譜時,需要抽取的實體點的類型。 |
relationship_types | 指定解析文檔產生知識圖譜時,需要抽取的關係邊的類型。 |
first_node_content | 在使用決策樹模式(tree)時,指定初始節點回複,預設為“您好,請問您有什麼問題?”。 |
end_node_content | 在使用決策樹模式(tree)時,指定最終節點回複,預設為“請問還有什麼其他問題嗎?”。 |
global_distance_threshold | 在使用決策樹模式(tree)時,指定在本地與全域結果中選擇全域搜尋結果閾值,預設為0.1,表示全域搜尋與客戶回複相似性與本地搜尋相比大於0.1 時,選擇全域搜尋結果。 |
樣本
SELECT adbpg_graphrag.initialize(
$$
{
"llm_model" : "qwen-max-2025-01-25",
"llm_api_key" : "sk-****************",
"llm_url" : "https://dashscope.aliyuncs.com/compatible-mode/v1",
"embedding_model" : "text-embedding-v3",
"language" : "Simplified Chinese",
"entity_types" : ["業務情境", "產品", "功能特點", "使用邏輯", "資料指標", "資料口徑"],
"relationship_types": ["包含", "屬於", "使用", "依賴", "關聯", "解決"]
}
$$
);上傳文檔
文法
SELECT adbpg_graphrag.upload(filename text, context text);參數
adbpg_graphrag.upload函數用於上傳檔案內容。上傳檔案後,GraphRAG會做文本切分、向量產生、知識圖譜抽取等一系列工作。
filename:檔案名稱。
context:檔案內容。
樣本
SELECT adbpg_graphrag.upload('產品資訊.txt', '小蜜客服系統可以提供問題解答,請假申請,知識庫搜尋等功能。');問題查詢
文法
SELECT adbpg_graphrag.query(query_str text);
SELECT adbpg_graphrag.query(query_str text, query_mode text);參數
query_str:需要詢問的問題
query_mode:查詢模式。GraphRAG支援以下查詢模式。
mix(預設):使用向量匹配與知識圖譜來擷取相關知識,並提供給大模型參考。
bypass:不使用任何向量或知識圖譜查詢,直接詢問大模型。
naive:僅使用向量查詢擷取相關知識,並提供給大模型參考。
local:僅使用知識圖譜中的實體點擷取相關知識,並提供給大模型參考。
global:僅使用知識圖譜中的關係邊擷取相關知識,並提供給大模型參考。
hybrid:使用知識圖譜的實體點和關係邊擷取相關知識,並提供給大模型參考。
tree:決策樹模式,將知識儲存為問答樹後,使用該模式進行查詢與回答。
樣本
SELECT adbpg_graphrag.query('小蜜有什麼功能?', 'hybrid');