我們如果要使用 RAG,就會需要有向量資料庫,這邊推薦 Supabase 這一個不用自己架設就可以使用的服務,因為也有一定的免費額度,給初期想要練習來說很方便。
首先當然是先到 Supabase 去註冊一個帳號,可以直接建立或是透過 GitHub 登入。
Step 1: 建立組織及專案
登入後系統就會引導你建立組織跟專案,設定一個自己喜歡的名稱。
接著建立專案,地區可以選擇比較近的地方,比如台灣可以選擇日本。
Step 3: 建立向量資料表
專案建立好後我們就能來建立向量資料表了,這邊由於要使用 OpenAI 的 Embbdding Model,所以我設定 1536 維。
首先從左邊選單進入 SQL Editor,在輸入欄位輸入以下內容,這段會幫你:
- 啟用
vector
擴充功能。 - 建立一個名為
nhi_drug_1536
的資料表,包含content
、metadata
和embedding
(1536 維) 欄位。 - 建立一個名為
match_nhi_drug_1536
的函式,用於後續的向量相似度搜尋。
-- 建表 create table if not exists nhi_drug_1536 ( id bigserial primary key, content text, metadata jsonb, embedding vector(1536), updated_at timestamptz default now() ); -- 建 index(避免重複) create index if not exists idx_nhi_drug_1536_emb_hnsw on nhi_drug_1536 using hnsw (embedding vector_cosine_ops); -- 建查詢函式(有 d. 避免撞名) create or replace function match_nhi_drug_1536 ( query_embedding vector(1536), match_count int, filter jsonb default '{}' ) returns table ( id bigint, content text, metadata jsonb, similarity float ) language plpgsql as $$ begin return query select d.id, d.content, d.metadata, 1 - (d.embedding <=> query_embedding) as similarity from nhi_drug_1536 d where d.metadata @> filter order by d.embedding query_embedding limit match_count; end; $$;
成功後你將看到 "Success. No rows returned" 的訊息。
Step 3: 啟用 RLS (Row Level Security)
為了資料安全,我們必須為新建的資料表啟用 RLS。
從左側的 Table Editor 進入,你會看到之前建立的 nhi_drug_768
資料表,你會看到上面有 RLS disabled,點擊它並啟用 RLS。
注意: 啟用 RLS 後,預設會拒絕所有存取,我們需要在後續步驟中設定適當的 Policy 才可讓 n8n 存取。
Step 4: 取得 API key
接著我們要取得 API key 才能讓 n8n 連結到 Supabase。
從左方進入「Project Setting」,點擊左邊的 API Keys 並切換到 API Keys 準備使用新版的 API Key,然後點擊 Generate API Key。
複製下面的 API Keys 之後會用到。
使用上如果前端要公開使用可以用 Publishable key,後端要操作的話用 Secret keys 會比較好。
參考來源:
n8n 教學 (二):Supabase 申請及建立向量資料庫