2024年6月20日 星期四

AI開發筆記 - 使用 OpenAI API 對文字抽特徵向量 (embedding) 並使用 FacebookResearch Faiss library 作向量搜尋

之前公司已經訓練出簡單的 AI Model 做一些應用,想要使用 Retrieval Augmented Generation (RAG) 架構進行加強,現在就先想到靠 OpenAI API with text-embedding-3-small model 來對文字抽特徵向量,接著把它存起來,再透過 FacebookResearch Faiss library 建立搜尋架構(尋找相似的向量),就可以完成簡易的向量搜尋。

整體流程:
  1. 整理一份 FAQ csv 格式,並把問題的文字,使用 text-embedding-3-small 模型抽特徵向量
  2. 使用 python pandas 用 csv 結構存起來
  3. 從 csv 建構出 python pandas 結構,再轉成 Facebook Faiss 結構
  4. 把 query strings 使用 text-embedding-3-small 模型對文字抽特徵向量
  5. 再拿 query strings 特徵向量去搜尋相似向量,印出五筆資料

% python3 -m venv venv
% source venv/bin/activate
(venv) % python3 -V
Python 3.12.2
(venv) % sw_vers 
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79
(venv) % pip install -r requirements.txt 

輸入資料:

% cat .env 
OPENAI_API_KEY=sk-proj-XXXXXXXXXXXXXXXXXXXXXX

% tree data 
data
├── all_with_embeddings.csv
└── raw.csv

1 directory, 2 files

% head -n 1 data/raw.csv 
ID,Product,Question,Answer

% head -n 2 data/all_with_embeddings.csv 
ID,Product,Question,Answer,embedding
1,產品,如何安裝設備,1. 首先依照...,"[0.02327146753668785, -0.05237892270088196, ..., -0.001935890642926097]"

運行查詢:

% bash script_query.sh "我的設備沒有訊號,該怎樣處理"

沒有留言:

張貼留言