自查詢
自查詢(Self Query)
自查詢是指能夠自我查詢的檢索問題方法。透過結構化、包含metadata的文件集,能將使用者的問題先透過metadata進行篩選,再藉由向量來查詢語意相似的文檔,比起直接做向量查詢能更精確的找到需要的文件。
流程
自查詢的流程為
0. create metadata
添加結構化資料到文件集與向量資料庫中
1. query constructor
將使用者問題轉換成 query(用來做向量查詢的字串)與filter(用來篩選文件集的metatada keywords)
例如,使用者問題為: A公司在2024年對電動車的銷售量為多少?
透過語言模型 將其轉換為
1 | { |
2. filter translator
將filter處理為程式可執行的dictionary
3. filter docs
根據filter篩選需要的文件集
1 | {'filter': {'$and': [{'拜訪年': {'$eq': '2024'}}, {'公司名稱': {'$eq': 'A公司'}}]}} |
4. similarity search
從篩選出來的文件集做向量相似度搜尋
範例
1. create chromadb & add metadatas
1 |
|
2. use self-query to filter docs and use query for similarity search
1 |
|
自訂parser函式
若您使用的語言模型回答無法使用預設的parser找出query與filter,可以自訂一個parser函式,輸入為語言模型的回答(string),輸出為[query(string), filter(dictionary)]。
1 |
|
loose filter
使用參數 loose_filter=True會將filter中的$and替換成$or,只要文件有符合任意attribute便會選取
1 |
|