2025/05/11

Quivr 101 - by deepwiki & chatgpt



🚀 Quivr 的核心功能與特性


根據原始碼內容,Quivr 是一個以生成式 AI 驅動的 RAG(檢索增強生成)系統,設計目的是成為用戶的「第二大腦」。以下是它的主要功能與運作機制。


🔑 核心功能


1️⃣ 精心設計的 RAG 實作架構


Quivr 內建一套高效且有明確設計原則的 RAG 工作流程。

📄 參考:README.md:15

  • 幫助開發者專注於應用層開發,而無需處理繁瑣的底層檢索與生成邏輯。


2️⃣ 支援多家大型語言模型(LLM)


Quivr 可整合多種 LLM 供應商,包含:

📄 參考:README.md:16

  • OpenAI(GPT 系列)

  • Anthropic(Claude)

  • Mistral

  • Google Gemma


→ 使用者可依照成本、效能與模型特性選擇最適合的 LLM。


3️⃣ 通用文件格式支援


Quivr 可處理多種常見文件類型:

📄 參考:README.md:17

  • PDF

  • 純文字(TXT)

  • Markdown

  • 可自定義解析器來支援特殊格式


4️⃣ 可自定義 RAG 流程


使用者可依需求自訂工作流程:

📄 參考:README.md:18

  • 加入網路搜尋功能

  • 整合外部工具與 API

  • 調整檢索與生成策略(如查詢改寫、過濾節點)


5️⃣ 與 Megaparse 整合


Quivr 支援與 Megaparse 整合,提升文件處理與資訊萃取能力。

📄 參考:README.md:19


🧠 Quivr 的核心運作方式


核心邏輯由 Brain 類別負責調度與串接各模組:

📄 參考:index.md:58-61

  • 建立知識庫(從檔案匯入)

  • 將文件轉換為向量嵌入並儲存

  • 透過自然語言查詢知識庫

  • 回傳由 AI 生成的回答


✏️ 使用範例


✅ 基本用法


📄 參考:README.md:57-74

  • 建立一個暫時的文字檔案

  • 建立一個 Brain 實例並匯入檔案

  • 提出問題,獲得 AI 回答


🔧 工作流程設定(YAML)


Quivr 支援使用 YAML 自訂 RAG 工作流程:

📄 參考:README.md:97-115


範例步驟包括:

  • 過濾對話歷史

  • 查詢重寫

  • 進行文件檢索

  • 基於檢索結果生成答案


⚙️ 客製化選項


📄 參考:README.md:120-139

  • 可選擇不同的 reranker 模型(如 Cohere)

  • 設定回傳段落數量(top_n)

  • 調整 LLM 的參數(token 數量、溫度值)


📊 可視化與互動應用

  • 官方文件中包含 工作流程圖解,說明各組件如何協作

    📄 參考:README.md:80-82

  • 也提供建立互動聊天介面的示範(如使用 Chainlit)

    📄 參考:quickstart.md:73-80


🎯 實際應用場景


根據原始碼與設計,Quivr 適用於以下領域:

  • 個人知識管理:建立可查詢的個人筆記與文件資料庫

  • 研究輔助:解析學術論文並提取重點

  • 法律與技術文件分析:例如契約、政策、技術手冊

  • 客服知識庫建置:協助回應顧客常見問題

  • 教育應用:建立互動式學習助手、解說教材內容


🛠️ 快速上手


📄 安裝教學參考:README.md:45-51


只需數行程式碼即可:

from quivr_core import Brain  
from uuid import uuid4  
  
brain = Brain.from_files(  
    name="Research Papers",  
    file_paths=["paper1.pdf", "paper2.pdf", "notes.md"],  
)  
  
run_id = uuid4()  
answer = brain.ask(  
    run_id=run_id,  
    question="這些論文的關鍵發現有哪些?",  
)  
  
print(answer.answer)


🧾 功能總結

功能

說明

完整的 RAG 流程支援

開箱即用,無需手動串接檢索與生成模組

多 LLM 支援

可依需求切換使用不同語言模型供應商

文件格式多元

支援 PDF、TXT、Markdown 及自定義格式

自訂工作流程

YAML 組合節點,自由設計處理步驟

串流式回應(Streaming)

適合即時互動應用與聊天機器人

可整合外部工具與 API

如網路搜尋、Megaparse 解析器等


📌 備註

  • 官方文件中曾提及 Demo 影片,但目前版本的 README 內被註解掉

  • 從 commit 記錄可看出開發仍持續進行,功能與穩定性持續提升中




🧠 Quivr 如何運作:以圖書館員為喻的人類行為類比


Quivr 是一套以 RAG(檢索增強生成)為基礎的系統,被設計成你的「第二大腦」。我們可以將其運作流程,比喻成一位知識豐富的圖書館員,協助你找出問題答案的過程。


1️⃣ 接收問題(就像圖書館員聽你提問)


當你向 Quivr 提出問題,就像你走到圖書館的諮詢櫃台,請教館員問題。

  • Quivr 的 Brain 類別就像這位圖書館員,負責接收問題並理解其脈絡。

    📄 參考:brain.py:496–500

  • 若你曾經和這位圖書館員聊過,他會記得你過去的問題與話題,幫助他更好理解你現在的需求。Quivr 也一樣,它保留對話歷史:

    📄 quivr_rag_langgraph.py:439–445


2️⃣ 理解與分析(像圖書館員在揣摩你的真正意圖)


好的圖書館員在聽完問題後,會稍作思考,試圖澄清你的真正需求,甚至會在腦中重新組織問題。

  • Quivr 在這步驟中,會使用「路由與拆解」機制分析輸入的查詢內容:

    📄 quivr_rag_langgraph.py:325–335


這就像圖書館員心裡思考:「你是在問某個具體事實?還是想了解一個概念的整體脈絡?」


3️⃣ 資料檢索(像圖書館員到書架找資料)


當圖書館員了解了問題,他會走向書架,找出相關書籍或資料。

  • Quivr 會先從向量資料庫(就像「知識書架」)中搜尋相似內容:

    📄 quivr_rag_langgraph.py:617–626

  • 找到之後,會進一步使用 重排序機制 篩選出最有價值的資訊:

    📄 quivr_rag_langgraph.py:648–650

  • 如果問題很複雜,圖書館員可能需要分好幾趟去不同區域找資料。Quivr 也類似,它會啟動「動態檢索」功能來多次擴展上下文:

    📄 quivr_rag_langgraph.py:700–704


4️⃣ 推理與整合(像圖書館員幫你把資料連成完整答案)


好的圖書館員不會只是把一堆書丟給你,而是會從中整合出一個具脈絡、合理又清晰的答案。

  • Quivr 在這個階段使用 LLM 執行生成任務,根據檢索內容來組織並產生回應:

    📄 quivr_rag_langgraph.py:952–962


這就像語言模型扮演「圖書館員的大腦」,把資料拼接成有邏輯的回覆。


5️⃣ 傳遞答案(像圖書館員耐心說明他的研究結果)


最後,圖書館員會向你口頭解釋他找出的資訊,通常會從最重要的開始說,再補充相關細節。

  • Quivr 會透過「串流方式」將生成的答案逐段回傳給你,像在進行一場自然的對話:

    📄 quivr_rag.py:220–245

  • 與此同時,Quivr 也會將此次對話更新進歷史紀錄,以備日後參考:

    📄 brain.py:559–561


6️⃣ 管控內容長度(像圖書館員知道你能吸收多少資訊)


圖書館員不會一次塞給你過多資訊,他會衡量你的吸收能力。

  • Quivr 也會確保傳遞給語言模型的內容不會超過其 token 限制(上下文長度)

    📄 quivr_rag_langgraph.py:744–751


🔁 完整流程類比整理

步驟

Quivr 行為描述

圖書館員行為類比

🟢 接收問題

接收使用者查詢,並參考對話歷史

聆聽問題並回想過去對話

🧠 理解分析

拆解查詢內容,識別意圖

在心中重新組織你的問題

📚 資料檢索

使用向量資料庫進行搜尋

到書架搜尋合適資料

🎯 重排序精選

篩選出最有用的內容段落

篩掉無關資料,只保留重點書籍

🧩 思考與組合

LLM 整合資訊後產出連貫回答

將資料整合為完整答覆

📤 串流回覆

用對話形式逐段回傳答案

逐步口頭解釋內容,並提供細節

🧾 記住歷史

記錄此次提問與回應,用於下次上下文參考

做筆記,幫助日後追蹤與理解


📝 備註:

  • 這種比喻特別貼切,因為 Quivr 和圖書館員都是「知識中介」

  • Quivr 的整個流程以 LangGraph 建構為有向圖(Directed Graph),具高彈性、模組化設計

  • 每個步驟可自由組合、替換,例如不同的檢索器、LLM、重排序器等




🧠 將 Brain 類別比喻成人類行為:就像一位個人圖書館員


根據 Quivr 的原始碼,Brain 類別是整個 RAG(Retrieval Augmented Generation)系統的核心。

如果用人類行為來比喻,它就像你專屬的圖書館員,負責管理你的私人知識圖書館。以下是這個比喻與實際功能之間的對應關係:


1️⃣ 建立圖書館(初始化)


當你「聘請」這位圖書館員(也就是建立一個 Brain 實例)時,你會提供:

  • 圖書館的名稱(name 參數)

  • 一個專屬 ID 識別證(id 參數)

  • 存放書籍的空間(storage 參數)

  • 他所受過的語言訓練(LLM 與嵌入模型設定)

    📄 參考:brain.py:110–118


2️⃣ 收集書籍(文件儲存)


圖書館員負責管理你的「書架」。當你帶新書(文件)來時:

  • 他會為每本書建立唯一識別碼

  • 放入書庫中

  • 並建立每本書的摘要卡片(metadata)

    📄 brain.py:339–345


3️⃣ 閱讀與摘要(文件處理)


這位圖書館員不只是把書擺著,他還會逐本閱讀,並將重點整理在卡片上,供日後查詢使用。

📄 brain.py:349–354


4️⃣ 建立卡片目錄(向量資料庫)


圖書館員將這些摘要卡片整理成一套「概念索引系統」,透過語意而非關鍵字來快速搜尋。

📄 brain.py:356–358


5️⃣ 記憶過往對話(對話歷史)


圖書館員會保留一份筆記本,記錄你過去問過的問題與他給的回答,幫助理解新問題的背景。

📄 brain.py:290–292


6️⃣ 回答提問(ask 方法)


當你問問題時,這位圖書館員會:

  • 仔細聆聽你提出的問題

  • 查閱他之前的對話筆記以了解背景

  • 搜尋卡片目錄找出相關摘要

  • 篩出最有幫助的卡片

  • 統整資訊,寫成一份完整回答

  • 最後把這次的問與答也記錄到筆記本裡

    📄 brain.py:496–500brain.py:559–561


7️⃣ 思考式回覆(串流回答)


圖書館員不會一次把答案全部告訴你,而是邊思考邊講,逐段分享資訊。

  • Quivr 透過串流方式回傳回答內容,模擬這種逐步解說的行為。

    📄 brain.py:533–535


8️⃣ 圖書館摘要資訊(info 方法)


你可以問圖書館員目前圖書館的狀況,他會告訴你:

  • 現在總共有多少本書

  • 最近的對話紀錄

  • 他目前會使用哪些語言(已設定的模型)

    📄 brain.py:273–288


9️⃣ 圖書館備份(save 方法)


這位圖書館員還可以幫你把整座圖書館「打包備份」,包括:

  • 所有的書籍

  • 卡片目錄(向量資料庫)

  • 對話筆記本

  • 他曾受的訓練資料(LLM 設定)

    📄 brain.py:207–208


🔁 整體流程範例(從頭到尾的比喻)


想像如下情境:

  1. 聘請館員:你建立了一個名為「研究助理」的 Brain 實例

  2. 提交書籍:你上傳了一批研究論文

  3. 閱讀處理:圖書館員逐一閱讀並整理成重點卡片

  4. 建立索引:這些卡片被有系統地歸檔於語意索引中

  5. 提問:「這些論文的核心發現是什麼?」

  6. 搜尋資料:館員從目錄中找出最有關的摘要卡

  7. 統整資訊:他把這些卡片內容整合成清晰回答

  8. 口頭解釋:他一段段說明,幫助你理解

  9. 記錄過程:他將你的問題與他的答案記下,以備將來查閱


📌 小結與補充說明

  • Brain 是 Quivr RAG 系統的核心指揮中心

  • 它將實際任務分派給其他模組(如 QuivrQARAGLangGraph 負責檢索與生成)

  • 這位圖書館員的角色不只是儲存與搜尋,更會「理解、連結與回應知識」,真正成為你的「第二大腦」




🧠 Quivr 向量資料庫的人類行為類比


根據 Quivr 的原始碼,若我們將其向量資料庫做成類比,它就像是一位擁有超凡「語意記憶力」的圖書館員,所使用的高度智慧卡片目錄系統 —— 不只靠關鍵字,而是靠概念來找資訊。


1️⃣ 建立「語意指紋卡片」(向量嵌入)


傳統圖書館員會為書籍建立標準索引卡(如標題、作者、主題),但我們這位「概念圖書館員」更厲害:

  • 他會深入閱讀每一份文件

  • 對每個重要章節或段落製作一張「概念索引卡」

  • 他不只是紀錄關鍵字,而是擷取內容的語意本質

  • 每張卡片都帶有獨特的「概念指紋」:向量嵌入

    📄 對應程式碼:brain.py:334–335


2️⃣ 整理概念卡片目錄(向量儲存)


與傳統卡片目錄按字母排序不同,這位圖書館員把卡片依語意概念放在多維空間中:

  • 相似概念會「空間上靠近」

  • 他能即時測量任意兩張卡片之間的「語意距離」

  • 即使用詞不同,語意接近的卡片也能被正確放一起

    📄 對應程式碼:brain.py:356–358


3️⃣ 以語意查詢(相似度搜尋)


當你提出問題時,這位圖書館員不靠關鍵字,而是靠語意:

  • 他先為你的問題產生一個「語意指紋」

  • 接著掃描整個卡片目錄,尋找與之相似的指紋

  • 即使用的詞彙不同,只要語意相近,也能找到

  • 最終根據「語意相似度」來排序結果

    📄 對應程式碼:brain.py:481–483


4️⃣ 精煉搜尋結果(重排序)


找到一堆可能相關的卡片後,圖書館員不會全丟給你,而會進一步篩選:

  • 仔細檢視每張卡片是否真的有幫助

  • 移除「看似相關但實際無用」的卡片

  • 優先挑出最關鍵、最具信息量的卡片

  • 確保整體內容不會超出你能吸收的資訊量(上下文長度)

    📄 對應程式碼:quivr_rag_langgraph.py:648–650


5️⃣ 自適應檢索(動態擴充)


若你的問題比較複雜,這位圖書館員會更靈活處理:

  • 一開始先抓一批相關卡片

  • 如果發現不夠,他會再去抓更多

  • 直到資料夠回答為止,或達到限制

  • 同時會控制總資訊量不超過你的理解範圍

    📄 對應程式碼:quivr_rag_langgraph.py:700–704


📘 完整類比流程


假設一整個流程如下:

  1. 處理文件:你提供研究論文給圖書館員

  2. 建立卡片:他為每個重要章節建立帶有「概念指紋」的卡片

  3. 整理卡片:將卡片依語意放在多維空間中

  4. 提問:「地中海飲食有哪些健康益處?」

  5. 轉換問題:他為你的問題產生一個語意指紋

  6. 語意搜尋:他掃描卡片找出語意相近的資料

  7. 重排序:他精選並過濾出真正有用的卡片

  8. 動態補充:如果不夠,就繼續擴大搜尋範圍

  9. 整合回答:他將卡片內容組合成完整有邏輯的回應給你


⚙️ 技術實作對應


Quivr 中的這套「語意索引系統」由下列技術實作:

類比元件

實際實作

概念指紋卡片

向量嵌入(OpenAI Embeddings 等)

卡片目錄空間

向量資料庫(FAISS)

語意搜尋

相似度搜尋演算法

重排序

Cohere / Jina 等 reranker 模型

動態擴充

自適應檢索邏輯(Dynamic Retrieval)


📌 小結

  • 向量資料庫在 Quivr 的 RAG 系統中是不可或缺的核心元件

  • 它支援以「概念語意」為基礎的資訊檢索,遠超過傳統關鍵字搜尋

  • 它與 Brain 類別及其他模組密切整合,構成一套智慧、自然且能理解語意的知識檢索系統


這個「概念圖書館員」的比喻有助於理解向量資料庫不只是資料儲存,而是一個能理解你語意的智慧夥伴



🧠 向量資料庫就像圖書館員的概念型卡片目錄


如果將 Quivr 的向量資料庫用人類行為來比喻,它就像是一位具備超凡語意記憶力的圖書館員,使用的是一種以概念與意義為基礎的卡片系統,而非僅憑書名或關鍵字。


1️⃣ 建立「概念索引卡片」(向量嵌入)


傳統圖書館員在整理書籍時,會建立基本的卡片:書名、作者、主題。但這位「概念型圖書館員」會:

  • 仔細閱讀每一份文件

  • 對每一個重要段落建立一張特製的「概念索引卡」

  • 不只是記錄關鍵字,而是提取內容的本質與意義

  • 每張卡片都包含一個獨特的「概念指紋」(即向量嵌入)來代表那段內容

    📄 對應程式碼:brain.py:334–335


2️⃣ 整理卡片目錄(向量儲存)


與傳統字母排序的卡片不同,我們的概念圖書館員會把卡片依語意概念排列於多維空間中:

  • 相似概念的卡片會被放在彼此靠近的位置

  • 他可以立即測量任意兩張卡片之間的「概念距離」

  • 即使使用不同的術語,也能找出彼此相關的卡片

    📄 對應程式碼:brain.py:356–358


3️⃣ 用語意搜尋(相似度搜尋)


當你提問時,這位圖書館員不會只找關鍵字:

  • 他會先為你的問題建立一個「概念指紋」

  • 然後在卡片目錄中掃描找出最接近的指紋

  • 即使你的用詞和內容完全不同,只要概念相近,他就能找到

  • 最後依「概念相似度」排序結果,而非文字相符度

    📄 對應程式碼:brain.py:481–483


4️⃣ 精煉搜尋結果(重排序)


找到一批可能相關的卡片後,這位圖書館員不會全部交給你:

  • 他會逐張卡片檢視是否真正與你問題相關

  • 排除那些雖然相似但實際無助的內容

  • 優先挑出最具啟發性與參考價值的資訊

  • 並控制總資訊量在你能消化的範圍內(上下文長度)

    📄 對應程式碼:quivr_rag_langgraph.py:648–650


5️⃣ 自適應檢索(動態擴充)


面對複雜問題時,這位圖書館員會更加靈活:

  • 一開始只取出一批標準數量的卡片

  • 如果發現資訊不夠,他會再拿出更多卡片

  • 持續擴展直到資料充足或達到檢索上限

  • 全程確保資訊總量不會超出你的理解負荷

    📄 對應程式碼:quivr_rag_langgraph.py:700–704


🧩 完整流程範例


想像以下情境:

  1. 處理文件:你帶來幾篇研究論文,圖書館員細讀每一篇

  2. 建立概念卡片:每個重要段落都被製作成一張帶有「概念指紋」的卡片

  3. 整理卡片目錄:他依據內容意義將卡片編排在語意空間中

  4. 提出問題:「地中海飲食對健康有什麼好處?」

  5. 建立問題指紋:圖書館員將問題轉換成語意向量

  6. 語意搜尋:他快速從卡片中找出相似指紋的內容

  7. 重排序篩選:剔除無關內容,優先回傳最關鍵卡片

  8. 動態擴充:若結果不足,他會補充更多直到足夠

  9. 整合回答:他用卡片內容組合出完整、連貫的答案給你


⚙️ 技術對應


在 Quivr 中,這整個「概念型卡片系統」是由以下元件組成的:

功能

技術實作方式

概念指紋建立(語意向量)

向量嵌入模型(如 OpenAI Embeddings)

卡片儲存與檢索

FAISS 向量資料庫

語意搜尋

相似度比對演算法

結果重排序

重排序模型(如 Cohere、Jina)

自適應擴充檢索

動態檢索邏輯(Dynamic Retrieval)


✅ 小結

  • 向量資料庫是 Quivr RAG 系統的核心元件,使其能夠根據語意進行高效率的知識檢索。

  • 它能超越傳統關鍵字匹配,找出「概念相似但用詞不同」的資訊。

  • 與 Brain 類別等元件緊密結合,形成一套完整的智慧化知識系統。

  • 「概念卡片目錄」的比喻,有助於理解向量資料庫如何運作、為何強大。




🧠 嵌入的比喻:圖書館員的「概念指紋」技巧


若我們延續前面「向量資料庫是圖書館員的概念卡片目錄」的比喻,那麼**嵌入(embeddings)就像是這位圖書館員用來為每份資料製作「概念指紋」**的特殊技術。


1️⃣ 概念指紋的產生過程


想像這位圖書館員擁有一項超能力,可以把任何文字的本質提煉出來,變成一組獨特的「概念圖譜」:

  • 每當有新文件送來,他會細讀全文

  • 不只是標註關鍵字或主題,而是深入分析其真正含義

  • 然後產生一組「概念指紋」——一種捕捉語意本質的模式

  • 這種指紋不是根據文字表面,而是根據底層概念與想法來形成

    📄 在 Quivr 中,這步驟由嵌入模型處理(通常是 OpenAI 的 Embeddings)

    📄 對應程式碼:brain.py:334–335


2️⃣ 多維語意空間中的位置


與真實世界中的指紋不同,這種「概念指紋」存在於多維的語意空間中:

  • 每個維度代表語意的不同層面

    • 例如:情感(正面/負面)、主題(科學、藝術、政治)、文風、抽象程度等

  • 將所有維度合併後,就形成這段文字在語意空間中的獨特「位置」

    📄 Quivr 建立向量資料庫的過程,就是把這些指紋放進這個多維語意空間裡

    📄 對應程式碼:brain.py:356–358


3️⃣ 測量概念相似度


這些「概念指紋」最大的威力,在於比較不同內容的語意相似度

  • 圖書館員可以將兩段不同內容的指紋進行比較

  • 他不是比對字面,而是比對整體概念與思維模式

  • 即使文字完全不同,只要意義接近,指紋也會相似

    📄 這正是 Quivr 如何執行相似度搜尋的原理

    📄 對應程式碼:brain.py:481–483


4️⃣ 問題也能被指紋化


當你問問題時,圖書館員不會只查關鍵字:

  • 他會先用同樣技術為你的問題建立「概念指紋」

  • 然後比對資料庫中所有文段的指紋

  • 指紋最接近的文件就會被選出

    ✅ 即使你的提問用的是完全不同的詞彙,也能正確比對並取得相關內容


5️⃣ 「概念」這種通用語言


最神奇的是,這種「概念指紋」超越了具體語言與詞彙的限制

  • 兩篇用不同字詞描述相同觀念的文章,會有相似的指紋

  • 不同語言的內容,只要講同樣的主題,也會產生類似指紋

  • 甚至比喻、隱喻等間接說法,也能與字面意義的說法連結起來

    ✅ 因為這些指紋捕捉的是「內容的意義」,而非「表達的形式」


⚙️ 技術實作方式


在 Quivr 中,嵌入的處理流程如下:

  1. 每段文字會送入嵌入模型(例如 OpenAI 的 text-embedding-ada-002

  2. 模型透過神經網路分析語意

  3. 輸出一個高維度的向量(例如 1536 維的浮點數)

  4. 該向量會儲存到向量資料庫(預設為 FAISS)

  5. 當有查詢時,系統會產生查詢的嵌入向量,並用餘弦相似度與資料庫中比對

  6. 找出最相似的結果並回傳對應文段


🌍 真實案例舉例


假設有一篇文章在討論氣候變遷,但從未出現「全球暖化」這四個字,只提到了:

  • 氣溫上升

  • 冰層融化

  • 溫室氣體


若你用傳統關鍵字搜尋「全球暖化的影響」,這篇文章可能不會出現。


但如果你用嵌入技術:

  • 該文章會有一組概念指紋,代表「氣候變遷」的語意

  • 你的查詢也會產生一組相似的指紋

  • 即使詞彙不同,模型會判定其概念接近,成功配對


✅ 這就是嵌入強大的原因:它理解的是「意義」而非「文字」


📌 補充說明

  • 嵌入是一種「語意壓縮技術」,能把複雜意思壓縮成固定長度的向量

  • 嵌入品質對 Quivr 的檢索效果有重大影響

  • 不同嵌入模型(如 OpenAI、Cohere、BGE 等)各有其優劣與適用領域

  • 「概念指紋」這個比喻能幫助你理解嵌入如何超越關鍵字匹配,抓住語意核心




📚 向量嵌入 vs. 傳統圖書館編目:觀念與方法的比較


根據 Quivr 的原始碼,你想比較 Quivr 的向量嵌入方法與傳統圖書館員使用主題詞與權威詞彙所進行的編目方式。這是一場非常有意義的比較,涉及現代 AI 資訊檢索技術傳統知識組織系統的根本差異。


🧠 Quivr 中的向量嵌入流程

  • 使用 OpenAI 的嵌入模型建立語意向量:brain.py:334–335

  • 儲存於向量資料庫中:brain.py:356–358

  • 進行語意相似搜尋:brain.py:481–483


🔍 核心比較項目


1️⃣ 知識表達方式(Knowledge Representation)


傳統圖書館編目

  • ✅ 手動編目:由受訓圖書館員進行內容分析並指派主題詞

  • ✅ 控制詞彙表:使用如 LCSH(國會圖書館主題詞)等標準化詞彙

  • ✅ 階層分類:知識架構多為分類法與樹狀結構

  • ✅ 權威控制:確保人名、機構等命名一致性


Quivr 向量嵌入

  • 🤖 自動化:AI 模型自動將文字轉換為語意向量

  • 🌐 連續語意空間:以多維空間表示概念

  • 🔄 潛在語意關係:捕捉隱含的語意相似性與概念連結

  • ❌ 無明確階層:關聯存在於向量距離中,而非明確標示


2️⃣ 細緻度與特徵呈現(Granularity & Specificity)


傳統圖書館編目

  • 📄 文件層級:多為整份書籍或文章指定主題

  • 🔢 詞彙有限:每項資料實際可指派主題有限

  • ✍️ 人工選擇:精選出「重要主題」呈現給讀者

  • ⚖️ 一致性高:強調不同資料間的主題標註一致


Quivr 向量嵌入

  • 📑 段落或區塊層級:針對每一段文字建立向量

  • 📈 高維度表示:向量可捕捉數百甚至上千個語意維度

  • 🔍 全面覆蓋:自動捕捉文本中所有概念關聯

  • 🔗 保留上下文:向量內隱含詞句與語意的連結


3️⃣ 檢索與搜尋機制(Search & Retrieval)


傳統圖書館編目

  • 🧩 布林邏輯:透過 AND / OR / NOT 條件檢索

  • ⛳ 精準匹配:需輸入正確主題詞

  • 🧭 主題瀏覽:支援階層式主題導覽

  • 👓 人類可讀:標註詞彙為人類理解所設計


Quivr 向量嵌入

  • 📐 相似度搜尋:使用餘弦相似度或向量距離

  • 🤏 模糊匹配:即使用字不同也能找出相似內容

  • 📝 範例式查詢:可以輸入一段文字作為查詢樣本

  • ⚙️ 機器最佳化:向量設計優化為機器理解而非人類可讀


4️⃣ 靈活性與演進速度(Adaptability & Evolution)


傳統圖書館編目

  • 🐢 更新緩慢:主題詞表透過委員會審議進行修訂

  • 📚 向後相容:重視舊資料的可讀性與可用性

  • 🏛️ 文化偏誤:易保留歷史偏見與刻板分類

  • 🧱 關係明確:主題之間的階層與關聯為明文定義


Quivr 向量嵌入

  • ⚡ 快速演進:模型可快速更新與重訓

  • 🔄 自動適應:新詞彙出現也能自動學習其概念

  • ⚠️ 含有偏誤:嵌入模型可能受訓練資料的偏見影響

  • 🌌 關係浮現:概念之間的關聯來自數據而非人為定義


5️⃣ 可解釋性與透明性(Explainability)


傳統圖書館編目

  • ✅ 流程透明:有明確的主題指派準則

  • ✅ 決策可說明:館員能說明為何選某主題

  • 📖 標準清楚:依據出版的標準與規則操作

  • 👨‍🏫 人工監督:主題標註皆經專業人員審核


Quivr 向量嵌入

  • ❓ 黑箱模型:向量產生過程難以解釋

  • 📊 統計性:來自大量數據模式學習

  • 🧩 難以稽核:無法直接解釋相似度來源

  • 🤖 自動化:少有人工參與與干預


🎯 實務意涵(實際應用差異)

面向

傳統編目

Quivr 嵌入系統

📚 資料發現體驗

結構化、可預期

關聯式、探索式、彈性高

🔧 維護需求

需人工持續維護

自動處理新資料,但模型需定期更新

🌍 跨語支援

各語言需獨立主題詞系統

向量自然支援跨語語意比對

📈 新興主題處理

需新增主題詞才能正式標註

新議題可即時透過語意比對被納入

🎯 精準度 vs 廣度

通常追求高精準度

可取得更多潛在相關資料(高召回率)


🔄 混合應用的可能性


現代資訊系統已開始探索混合式方法,例如:

  • 結合 嵌入的語意自動化 與

  • 傳統主題分類的結構與可說明性


在 Quivr 中,未來也可能:

  • 將圖書館的主題詞(如 LCSH)加入向量搜尋的過濾條件

  • 或將主題詞做為語意嵌入的補強訊號,增強檢索精度


📌 備註:

  • 本比較聚焦於觀念差異,而非技術實作細節

  • 兩種系統在不同使用情境下各有強項與限制

  • Quivr 的嵌入式知識檢索代表一種全新語意驅動的知識組織典範


根據其原始碼與架構設計,Quivr 是一套以生成式 AI 驅動的「第二大腦」系統,旨在成為個人的知識助手。以下是最常見與實用的應用情境,涵蓋個人與專業領域。


1️⃣ 個人知識管理(Personal Knowledge Management)


Quivr 最核心的用途就是成為個人的知識庫,也就是你的「第二大腦」:

  • 儲存並組織個人文件

  • 使用自然語言查詢筆記與資料

  • 根據你自己的內容產生 AI 回答

    📄來源:README.md:11


這是 Quivr 的設計起點,也是最普遍的使用方式。


2️⃣ 文件處理與分析(Document Processing and Analysis)


Quivr 能有效處理多種文件格式並建立可搜尋的內容庫:

  • PDF 文件

  • 純文字檔案(TXT)

  • Markdown 筆記

  • 自定義格式(可自寫 Parser 支援)

    📄來源:README.md:17


對於研究人員、學生、專業人士來說,這是一個強大的知識整理與萃取工具。


3️⃣ 多模型整合(Multi-LLM Integration)


Quivr 支援多家語言模型供應商,提供彈性與可擴展性:

  • OpenAI(GPT)

  • Anthropic(Claude)

  • Mistral

  • Google Gemma

    📄來源:README.md:16


你可以根據預算、表現與語言支援選擇最合適的模型。


4️⃣ 自定義 RAG 工作流程(Custom RAG Workflows)


你可以針對不同應用場景設計工作流程,實現更細緻的控制,例如:

  • 學術研究助理

  • 法律文件分析

  • 醫學文獻整理

  • 技術文件檢索與比對


5️⃣ 多語言內容處理(Multilingual Content Processing)


Quivr 內建語言自動識別與多語重排序模型的支援:

  • 適合處理跨語言資料集

  • 提升國際化研究與多語內容的搜尋效率


適合全球業務情報、跨國研究機構等應用場景。


6️⃣ 互動式聊天應用(Interactive Chat Applications)


透過串流式回應(streaming responses),Quivr 非常適合建立即時對話應用:

📄來源:quivr_rag.py:220-245


可用於:

  • 客服聊天機器人

  • 學習助手

  • 即時研究查詢助理


7️⃣ 結合網路搜尋(Enhanced Web Search with Context)


你可以將 Quivr 擴展為具備網路搜尋能力的工具:

📄來源:README.md:18


應用場景包括:

  • 結合個人知識與最新網路資訊

  • 進行即時事實查核

  • 補充外部資料來源以強化答案


8️⃣ 文件導向應用(Document-Centric Applications)


透過「完整文件語境檢索」,Quivr 特別適合用於需保留文脈的應用:

  • 合約條文分析

  • 政策文件解讀

  • 技術手冊導航


9️⃣ 教育應用(Educational Applications)


Quivr 的 Brain 類別支援多種學習情境:

📄來源:brain.py:87-100


應用實例:

  • 學習助理

  • 課程資料查詢

  • 製作學習素材


🔟 開發者工具整合(Developer Tool Integration)


模組化架構讓 Quivr 可輕鬆整合進開發者工作流程:

📄來源:brain.py:356-358


可應用於:

  • 程式碼文件搜尋

  • API 文件查詢

  • 技術知識管理平台


🧪 實作範例:個人知識管理


以下是如何使用 Quivr 建立個人文件庫並查詢:

from quivr_core import Brain  
from uuid import uuid4  
  
# 建立你的「大腦」並加入文件
brain = Brain.from_files(  
    name="Research Papers",  
    file_paths=["paper1.pdf", "paper2.pdf", "notes.md"],  
)  
  
# 提問:統整這些文件的重點發現
run_id = uuid4()  
answer = brain.ask(  
    run_id=run_id,  
    question="這些論文的關鍵發現有哪些?",  
    retrieval_config=None  # 使用預設設定  
)  
  
print(answer.answer)


📌 備註

  • Quivr 架構高度彈性,能擴展到多種專業領域

  • 透過模組化設計,可自訂 RAG 流程、模型與排序器

  • 支援多 LLM + 多語言 + 多格式文件 = 適用範圍廣泛




🧠 Quivr 如何建立知識庫


根據原始碼來看,需要特別注意的是:Quivr 並不是建立傳統那種具有明確實體關聯的「知識圖譜(Knowledge Graph)」。它所建構的,其實是一種基於向量的知識庫(Vector-Based Knowledge Base),運用的是 RAG(檢索增強生成)技術。


以下是 Quivr 建立知識庫的方式說明:


🔧 Quivr 知識庫的核心組件


Quivr 的核心運作元件是 Brain 類別,負責整個知識庫的構建流程。

📄 參考程式碼位置:brain.py:87-100


建立知識庫的流程包含以下幾個關鍵步驟:


1️⃣ 文件匯入與儲存


當你使用文件建立一個 Brain 實例時,Quivr 首先會將這些文件儲存在所選的儲存系統中。

📄 參考:brain.py:339-345


這部分的程式碼負責將檔案上傳與初始化儲存作業。


2️⃣ 文件處理與切分


文件儲存後,Quivr 會進行以下處理動作:

  • 提取文件中的文字內容

  • 將文件拆分為可管理的「段落區塊(chunk)」

  • 為每個區塊附加相關的中繼資料(metadata)


這些處理動作由 process_files 函式執行:

📄 brain.py:46-84


對純文字檔,Quivr 使用遞迴式字元切分演算法來處理。


3️⃣ 向量嵌入生成


當文件被處理並切分後,Quivr 會將每個段落轉換為向量嵌入(vector embedding),預設使用 OpenAI 的嵌入模型。

📄 參考:brain.py:334-335


4️⃣ 建立向量資料庫


這些嵌入向量會被儲存在向量資料庫中(預設為 FAISS),用以支援後續的語意相似度檢索。

📄 參考:brain.py:356-358


此向量資料庫就是 Quivr 知識庫的核心,能根據語意相似度找出最相關的資訊。


🔍 檢索流程(Retrieval Process)


當你對知識庫提出查詢時,Quivr 會:

  1. 使用向量相似度搜尋找出相關段落

    📄 brain.py:481-483

  2. 使用重排序演算法(如 Cohere 或 Jina)提升檢索結果的準確性

    📄 quivr_rag_langgraph.py:648-650


🔁 RAG 工作流程(RAG Workflow)


整體 RAG 流程由 LangGraph 所建構的有向圖(Directed Graph)實作而成:

📄 quivr_rag_langgraph.py:254-275


這樣的圖形式工作流程允許彈性設定處理步驟,如:

  • 對話歷史過濾

  • 查詢改寫

  • 文件檢索

  • 回答生成


其中檢索步驟是連結向量知識庫的關鍵:

📄 quivr_rag_langgraph.py:617-626


🔄 動態檢索(Dynamic Retrieval)


Quivr 也支援「動態檢索」,可根據查詢需求自動調整檢索區塊的數量,特別適合處理複雜問題。

📄 quivr_rag_langgraph.py:675-684


🧾 總結:Quivr 知識庫的建立流程

步驟

說明

文件匯入

將檔案上傳至儲存系統

文件處理

提取內容並切分為段落區塊

向量嵌入

每個區塊轉為向量表示

建立索引

向量嵌入儲存在向量資料庫中(如 FAISS)

向量檢索

查詢時根據語意找出相關段落

重排序

使用排序模型提升結果品質

回答生成

基於檢索內容由 LLM 產生回答


🧠 備註

  • Quivr 並非建構明確實體關係的知識圖譜,而是基於語意相似度的「向量化知識庫」

  • 架構採模組化設計,可自由替換:

    • 嵌入模型(如換成 Hugging Face)

    • 向量資料庫(如換成 Weaviate、Pinecone)

  • RAG 工作流程亦可針對不同應用情境自訂修改




🔍 Quivr 與主流知識圖譜系統的比較


首先需說明的是:Quivr 並非傳統意義上的知識圖譜系統,而是一種基於向量技術的知識庫,採用 RAG(Retrieval Augmented Generation,檢索增強生成) 方法來進行語意檢索與回答生成。


🧠 Quivr 如何建立知識表示(Knowledge Representation)


Quivr 的知識表示核心由 Brain 類別負責實作:

📄 參考程式碼:brain.py:87-100


主要流程如下:

  1. 文件匯入:使用者將文件上傳到指定儲存系統

  2. 文件處理:提取內容並切分成段落(chunks)

  3. 向量嵌入:每個段落轉換為向量表示(embedding)

  4. 儲存向量:使用 FAISS 建立向量資料庫(預設)

  5. 語意檢索:透過向量相似度搜尋找出相關段落


📊 Quivr 與傳統知識圖譜系統比較


以下為 Quivr 與幾個主流圖譜系統(Neo4j、Amazon Neptune、Stardog、GraphDB、AnzoGraph)的特性對照表:


1️⃣ 

Neo4j

特性

Quivr

Neo4j

資料模型

向量嵌入

屬性標記圖(Labeled Graph)

關係表達

隱性(語意相似度)

顯性(型別化關係)

查詢語言

自然語言

Cypher

實體辨識

倚賴語言模型(LLM)

預先定義的 schema

可擴展性

向量資料庫受限

高度可擴展

AI 整合

原生整合 LLM

需外掛模組整合


2️⃣ 

Amazon Neptune

特性

Quivr

Amazon Neptune

資料模型

向量嵌入

RDF 或屬性圖

查詢語言

自然語言

SPARQL 或 Gremlin

主機環境

自行部署

全託管雲端服務

可擴展性

中等(視向量庫而定)

企業等級

AI 整合

內建 RAG 功能

AI 功能需另建模

成本

開源免費

按用量計費


3️⃣ 

Stardog

特性

Quivr

Stardog

資料模型

向量嵌入

RDF 圖模型

推理機制

基於 LLM

邏輯推理引擎

查詢語言

自然語言

SPARQL

知識表達

隱性語意

顯性本體(Ontology)

企業功能

限制較多

完善的企業等級功能

向量處理

核心功能

附加功能


4️⃣ 

GraphDB

特性

Quivr

GraphDB

資料模型

向量嵌入

RDF 三元組資料庫

標準支援

無明確標準

支援 RDF、OWL、SPARQL

推理能力

語言模型推理

規則式與語意推理引擎

資料視覺化

基礎(需自建)

內建圖譜視覺化工具

實體連結

隱性連結

明確關聯

文本處理

文件切段

NLP 與資訊擷取流程


5️⃣ 

AnzoGraph

特性

Quivr

AnzoGraph

資料模型

向量嵌入

RDF 與屬性圖混合模型

效能架構

單節點向量庫

分散式 MPP 架構

圖分析能力

基礎

進階圖形分析

擴展能力

中等

企業等級大規模

查詢語言

自然語言

SPARQL、Cypher

AI 整合

內建 LLM 支援

額外模組整合


🔍 核心差異分析


1. 關係建模方式:

隱性 vs 顯性

  • 傳統圖譜系統(如 Neo4j、Stardog) 使用節點與邊明確建模資料間的結構化關係。

  • Quivr 則依賴向量空間中的語意相似性,關係為隱性推斷。

    📄 參考:brain.py:481-483


2. 查詢方式:

自然語言 vs 結構語言

  • 圖譜系統 使用結構化語言如 SPARQL、Cypher。

  • Quivr 使用自然語言查詢,經由 RAG 流程解析並回應。

    📄 參考:quivr_rag_langgraph.py:254-275


3. 架構需求:

無結構 vs 嚴謹 Schema

  • 傳統圖譜需定義資料 Schema 與實體類型。

  • Quivr 屬於「無結構」架構,不需預設實體結構。

    📄 參考:brain.py:46-84


4. 推理能力:

語言模型 vs 邏輯推理

  • 知識圖譜 仰賴邏輯規則進行本體推理。

  • Quivr 則使用 LLM 進行語意推理與上下文理解。

    📄 參考:quivr_rag_langgraph.py:617-626


🧭 選擇建議:Quivr vs 傳統知識圖譜


✅ 適合選用 Quivr 的情境:

  • 不需建立明確的關聯圖結構

  • 希望快速上手、無需定義 Schema

  • 主要以自然語言查詢為主

  • 希望直接與語言模型整合

  • 資料來源為文件或筆記,重點在問答與摘要功能


✅ 適合選用傳統圖譜的情境:

  • 資料結構複雜、關係明確

  • 需要邏輯推理與規則處理

  • 須支援標準查詢語言(SPARQL、Cypher)

  • 有企業級效能與資料治理需求

  • 希望進行大規模圖形分析與視覺化


📌 總結

分類

Quivr

傳統知識圖譜系統

知識表示方式

向量語意嵌入

顯性實體與關係

查詢方式

自然語言 → RAG

結構化語言(SPARQL、Cypher)

推理方式

語言模型推論

規則引擎、本體推理

架構彈性

無結構(免定義 Schema)

須明確定義資料架構

適用場景

文件問答、知識摘要、語意檢索

複雜資料建模、圖形推理、企業治理

AI 整合

原生支援(LLM)

需額外整合


📌 備註:

  • Quivr 的設計更貼近現代 AI 驅動的知識系統趨勢

  • 傳統知識圖譜則更適合需要嚴謹資料結構與推理邏輯的場景

  • 越來越多「混合型架構」正在出現,結合向量嵌入與圖形關係建模


當我們比較「向量技術的知識庫」(Vector-Based Knowledge Base)與「知識圖譜」(Knowledge Graph, KG)時,其差異主要體現在資料結構、查詢方式、推理方式應用場景上。以下為完整對照:


🧠 向量知識庫 vs. 知識圖譜:全面比較

項目

向量技術的知識庫(如 Quivr)

傳統知識圖譜(如 Neo4j、Stardog)

📦 資料結構

向量嵌入(embeddings)

實體 + 關係 + 屬性(節點與邊)

🔍 查詢方式

自然語言查詢 → RAG

結構化語言查詢(SPARQL、Cypher)

🤔 關係建模

隱含語意關聯(語義相似度)

顯性語義關係(明確定義邏輯連結)

🧠 推理方式

LLM 語意推理(上下文理解)

規則式推理 / 本體論推理引擎

🏗️ 架構需求

Schema-free,無需預建結構

Schema-driven,需定義本體與關係

📚 知識表達方式

語意向量空間中的上下文表示

節點(實體)與邊(關係)構成的結構化表示

🔄 資料更新

文件更新後需重新嵌入向量

即時更新關係與屬性即可

📈 可擴展性

向量資料庫受限於記憶體與檢索效能

圖形資料庫可水平擴展、大規模佈署

🔧 AI 整合

原生支援 LLM(如 GPT、Claude)

需額外模組整合 AI 功能

💬 回答風格

生成式回應(摘要式、自由文字)

精準查詢回傳結構化結果

🎯 適合應用場景

非結構化文件檢索、問答系統、知識摘要、個人筆記助理等

複雜資料模型、法規、供應鏈、生醫圖譜、推薦系統等應用


🧩 結論建議


✅ 適合使用向量知識庫(如 Quivr)當你:

  • 想快速上手建立個人或文件型知識系統

  • 主要資料是文字、筆記、PDF、教學內容等

  • 查詢方式偏好自然語言

  • 希望與 LLM 緊密結合(如 GPT 生成回應)

  • 不需要手動建構實體與關係模型


✅ 適合使用知識圖譜當你:

  • 擁有結構化資料,關係複雜(例如人、事件、產品間關係)

  • 需要可解釋推理邏輯、問責性與知識溯源

  • 想透過圖譜分析做複雜的查詢與視覺化

  • 要支援標準語言查詢、規則、推論與驗證


📚 圖書館使用的 Linked Data(連結資料) 明確屬於 傳統知識圖譜(Knowledge Graph) 的範疇,特別是採用了語意網技術(Semantic Web)和W3C 標準


🧠 為什麼圖書館的 Linked Data 是知識圖譜類型?


以下是幾個關鍵特徵:

特徵

圖書館 Linked Data 描述

對應類型

📦 資料模型

使用 RDF(Resource Description Framework) 三元組模型(主詞-謂詞-賓詞)

✅ 傳統知識圖譜

🧩 架構設計

基於 明確定義的本體(Ontology),如 BIBFRAME、Dublin Core、SKOS

✅ 知識圖譜

🔗 關係表達

顯性語意關係(例如:「書籍」由「作者」創作)

✅ 知識圖譜

🧠 推理能力

可支援推理(Reasoning)與分類,透過 OWL、RDFS 等邏輯推論

✅ 知識圖譜

🌐 資料連結

與其他機構(如 VIAF、Wikidata)交叉連結形成「網狀資料宇宙」

✅ 知識圖譜

🔍 查詢語言

使用標準語言 SPARQL 進行查詢

✅ 知識圖譜


🔗 常見圖書館 Linked Data 標準與實作

  • BIBFRAME:取代 MARC 格式的 RDF 模型,由美國國會圖書館推動

  • Dublin Core:描述資源的核心元素標準(標題、作者、主題等)

  • SKOS:用於表述分類系統、詞彙表(如主題標籤、分類號)

  • VIAFISNI:用於人名、機構名的實體標識碼,支援跨機構連結


✅ 結論


圖書館所用的 Linked Data 完全屬於「知識圖譜」類型,其特徵包括:

  • 使用語意標準(RDF, OWL, SPARQL)

  • 本體導向資料建模

  • 高度結構化與可互操作性

  • 適用於大規模查詢、共享與連結知識


📚 

Linked Data 更適合「權威資料」的原因


Linked Data(語意網技術下的知識圖譜)非常適合處理:


✅ 

穩定性高、邏輯結構明確、需標準化的資料

,如:

  • 圖書館目錄(書名、作者、ISBN、主題分類)

  • 法規條文與其解釋關係

  • 地名、歷史事件、專有名詞(如 VIAF、ISNI)

  • 學術本體(如醫學術語、教育分類)


原因:

  • 📐 需嚴格結構化(有 schema、本體)

  • 🧠 需邏輯推論與問責性(可驗證關係是否正確)

  • 🔗 要與其他機構資料互連(如 Wikidata、DBpedia)

  • 🏛️ 通常是權威資料庫,變動不頻繁


⚡ 

向量知識庫更適合「快速變動、非結構化資訊」的原因


Vector-based Knowledge Base(例如使用 RAG 的 Quivr)適合處理:


✅ 

內容快速產生、難以結構化或動態變化的資訊

,如:

  • 最新新聞、技術趨勢文章

  • 使用者筆記、討論紀錄、支援票據(Helpdesk logs)

  • 學習筆記、研究文件、個人知識管理

  • 公司內部報告、簡報、PDF 彙整


原因:

  • 📄 資料是非結構化或半結構化的自然語言

  • ⏱️ 內容更新頻繁,不適合建模型

  • 🧠 查詢方式是語意驅動的問答、摘要、推理

  • 🚀 建置與應用速度快,支援 LLM 整合


🧭 總結比較

特性

Linked Data / 知識圖譜

向量知識庫(Vector KB / RAG)

資料性質

權威性高、穩定、可結構化

快速變動、非結構化、動態生成

架構需求

本體、schema、RDF/SPARQL

無 schema,自然語言為主

資料來源

MARC、規範表、詞彙表、官方資料

PDF、筆記、聊天記錄、報告等

更新頻率

低、可控

高、即時

推理方式

本體論 + 邏輯規則

語言模型(LLM)語意推理

建置與維護成本

高(需建模)

低(只需上傳文件)

適合應用

知識標準化、資料互通、圖譜查詢

文件問答、研究支援、快速整理資訊


✅ 結論:

  • 若你要處理「標準化、可引用、具邏輯關係」的穩定資訊(如圖書分類、人物身份、法律編碼),→ Linked Data 是最佳選擇

  • 若你要處理「即時收集、語意搜尋、知識萃取」的筆記或文檔,→ 向量知識庫與 RAG 更靈活實用




🧩 Quivr 所依賴的元件與套件組成


根據 Quivr 的原始碼與設定檔內容,可以將其外部依賴與核心元件分為以下幾大類:


1️⃣ 核心語言與開發框架


Quivr 是以 Python(版本 3.11 或以上) 開發,並使用多個核心函式庫:

  • Pydantic:用於資料驗證與設定管理(pyproject.toml:6-7

  • Rich:提供美觀的終端機輸出格式(pyproject.toml:12


2️⃣ LangChain 生態系統依賴


Quivr 的 RAG 系統高度依賴 LangChain 生態系統,作為其語言模型應用框架:

  • LangChain Core:構建 LLM 應用的基礎核心(pyproject.toml:8

  • LangChain:主程式庫(pyproject.toml:9

  • LangGraph:用於實作具狀態與流程控制的多步驟對話工作流(pyproject.toml:10

  • LangChain Community:社群開發的擴充模組(pyproject.toml:17


3️⃣ LLM 提供者整合模組


Quivr 支援多家語言模型供應商,並透過 LangChain 套件整合:

  • OpenAI 模型整合(pyproject.toml:15

  • Anthropic(Claude) 模型整合(pyproject.toml:18

  • Cohere 模型整合(pyproject.toml:16

  • MistralAI 模型整合(pyproject.toml:25


4️⃣ 向量資料庫與嵌入模型


文件向量化與相似度檢索的依賴:

  • FAISS(Facebook AI Similarity Search):高效的向量檢索工具(pyproject.toml:21

  • Tiktoken:OpenAI 提供的分詞工具,用於切段與 Token 控制(pyproject.toml:13


5️⃣ 文件處理相關工具


Quivr 能處理多種文件格式,依賴以下模組:

  • Transformers + SentencePiece:用於嵌入與自然語言處理(pyproject.toml:20

  • FastText-LangDetect:用於自動語言偵測(pyproject.toml:26

  • MegaParse SDK:文件解析與預處理(pyproject.toml:24


6️⃣ 實用輔助套件


這些工具用於輔助 Quivr 的基本操作:

  • HTTPX:非同步 HTTP 請求(pyproject.toml:11

  • AIOFiles:非同步檔案處理(pyproject.toml:14

  • RapidFuzz:模糊字串比對(pyproject.toml:22

  • MarkupSafe:安全處理 HTML/文字(pyproject.toml:23


7️⃣ 監控與可觀測性(Observability)

  • Langfuse:提供語言模型使用追蹤、效能監控與記錄分析(pyproject.toml:27


8️⃣ 間接依賴(Transitive Dependencies)


根據 lock 檔案,Quivr 間接使用以下重要函式庫:

  • Cohere SDK:用於重排序(requirements.lock:41-42

  • SQLAlchemy:資料庫操作 ORM(requirements.lock:265-267

  • Pandas:資料處理工具,間接由其他模組依賴(推測自 tzdata 需求)


9️⃣ 工作流程設定檔(Workflow Configuration)


Quivr 使用 YAML 檔案來定義 RAG 工作流程(如:talk_to_file_rag_config_workflow.yaml):


可設定內容包括:

  • LLM 參數(模型、溫度、Token 限制)

  • 重排序器設定(模型名稱、返回 top_n)

  • 節點流程邏輯與連接方式


🔟 開發與測試相關依賴


開發者可使用以下工具進行型別檢查、測試與程式碼風格檢查:

  • MyPy:靜態型別檢查(pyproject.toml:39

  • Pre-commit:Git Hook 管理工具(pyproject.toml:40

  • Pytest:單元測試框架(pyproject.toml:46

  • Ruff:快速的 Lint 工具(pyproject.toml:42


🧠 架構核心組件說明(Component Architecture)


Quivr 架構模組化、職責清晰,各元件間協同運作如下:

組件名稱

說明

Brain

主要協調模組,管理文件儲存、嵌入生成與檢索流程

QuivrQARAGLangGraph

利用 LangGraph 建立的 RAG 流程控制與推理引擎

LLMEndpoint

統一介面,整合各家 LLM 模型供應商

Vector Storage

儲存向量嵌入,支援檢索與比對

整體工作流程包含:

  • 查詢歷史過濾

  • 查詢改寫

  • 文件向量檢索

  • 回答生成與串流輸出


📄 文件處理流程(Document Processing Pipeline)


Quivr 使用 LangChain 的各種 Loader 來載入並解析不同格式文件,例如:PDF、Markdown、TXT 等。

📄 相關程式碼位置:default.py:4-18


📝 備註

  • Quivr 採模組化設計,方便替換各元件(如:更換 LLM、向量庫、排序器)

  • 系統設計具高度擴充性,支援自定義文件處理器與工具整合

  • 其核心功能建構於 LangChain 生態系統之上,因此依賴眾多語言處理相關模組




🔍 Quivr 的動態檢索能力與其他方案比較


根據 Quivr 原始碼,所謂「動態檢索(Dynamic Retrieval)」是實作於 QuivrQARAGLangGraph 類別中的一個進階特性,屬於 RAG(Retrieval Augmented Generation)流程的一部分。


🧠 什麼是 Quivr 的動態檢索?


Quivr 的動態檢索功能由 dynamic_retrieve 方法負責:

📄 位置:quivr_rag_langgraph.py:675-684


這個方法會根據查詢內容的上下文,自動調整所檢索段落的數量,以確保模型取得足夠背景資訊來生成優質回答。


⚙️ Quivr 動態檢索的運作方式


其演算法流程為:

  1. 設定初始檢索參數

  2. 根據查詢結果是否足夠,自動增加檢索段落數(k)與重排序數量(top_n)

  3. 檢查目前回傳內容是否足以構成有效回答

  4. 若不夠,繼續迭代,直到達到「資訊足夠」或達到最大輪次為止


📄 動態調整邏輯見 quivr_rag_langgraph.py:700-704

👉 顯示如何逐步提高 top_n(重排序回傳數)與 k(初始檢索數)


🔑 與其他系統的主要差異


1️⃣ 自動調整檢索數量(Adaptive Retrieval Count)


與固定 k 值的系統不同,Quivr 會根據查詢語意與檢索結果,自動調整:


📄 程式碼範例:quivr_rag_langgraph.py:706-713

  • 每輪都會提升 k 和 top_n

  • 並記錄當前調整參數(有記錄功能)


2️⃣ 上下文感知(Context-Aware Retrieval)


Quivr 會檢查檢索回來的段落是否會超過 LLM 的上下文限制(token 長度):

📄 quivr_rag_langgraph.py:744-751


→ 可避免傳統檢索常見的 過量內容超出 LLM 可處理範圍 問題。


3️⃣ 基於相關性的迭代處理(Relevance-Based Iteration)


系統會在檢索回來的內容不足時,自動執行多次迭代,直到:

  • 找到足夠「有用」的段落,或

  • 達到預設的最大輪數(停止)


📄 quivr_rag_langgraph.py:752-754


→ 傳統方法通常只做一次檢索,且固定數量,無法依查詢動態調整。


4️⃣ 與重排序模型的深度整合


Quivr 在每次迭代中皆會重新執行 重排序模型(如 Cohere、Jina):

📄 quivr_rag_langgraph.py:714-717


→ 可比單純靠向量相似度搜尋更能抓到真正有用的內容。


🔁 Quivr 動態檢索 vs 標準檢索(Quivr 也有標準檢索模式)


📄 標準檢索見:quivr_rag_langgraph.py:617-626

特性

動態檢索

標準檢索(非動態)

是否多輪執行

✅ 是(多輪調整)

❌ 否(單輪處理)

參數是否動態調整

✅ top_n, k 自動變化

❌ 固定設定

是否檢查上下文長度

✅ 有

❌ 無

結果品質

高,適合複雜查詢

較低,適合簡單查詢


🔍 實作細節流程


動態檢索在 Quivr 中包含以下步驟:

  1. 初始設定:設定初始的 top_n 與 k 值

    📄 quivr_rag_langgraph.py:696-699

  2. 每輪疊代提升檢索數:逐步擴展查詢回傳內容

    📄 quivr_rag_langgraph.py:701-717

  3. 非同步處理任務(async):提升效能

    📄 quivr_rag_langgraph.py:719-733

  4. 檢查上下文長度:避免超過 LLM 處理能力

    📄 quivr_rag_langgraph.py:744-751

  5. 根據相關性與最大輪次決定停止

    📄 quivr_rag_langgraph.py:752-754


✅ 實際效益與優勢

優勢

說明

✅ 更適合複雜查詢

能逐步擴大上下文,捕捉深層關聯

✅ 有效控管 token 使用

不會超過 LLM 處理範圍,提升效率

✅ 回答品質明顯提升

較高機率取得關鍵內容組成回答

✅ 查詢適應性高

不同查詢主題會自動調整檢索策略


🧾 總結:Quivr 動態檢索功能的優勢

項目

Quivr 動態檢索的特性

🎯 動態調整

根據查詢語意調整回傳段落數量(k, top_n)

🔄 多輪疊代

多次檢索與重排序,取得最佳內容

🧠 上下文感知

確保不超過 LLM 的 context window

🤖 重排序整合

搭配重排序模型(如 Cohere)以強化結果相關性

⚡ 非同步處理

提升大規模查詢下的處理效率

🧩 彈性架構

可自訂與其他工作流程步驟組合(如歷史過濾、改寫等)


📌 備註

  • 動態檢索是 Quivr 架構中具「意見導向」的 RAG 特性之一

  • 建構於 LangGraph 架構之上

  • 可搭配不同的向量資料庫與重排序器使用(如 FAISS、Weaviate、Cohere、Jina)


🎯 Quivr 中重排序(Reranking)的目的


在 Quivr 的 RAG 流程中,重排序是一個關鍵元件,它強化了文件檢索與回答品質。根據原始碼,我們可以清楚看出 Quivr 如何實作重排序功能,以及它在整體系統中扮演的重要角色。


1️⃣ 提升檢索相關性


重排序最主要的目的,是提升初步檢索結果的語意相關性

初步的向量相似度搜尋只能根據嵌入向量計算相似度,而重排序則會套用更高階的語言模型來評估真正的語意與上下文:

📄 參考:quivr_rag_langgraph.py:277–284


✅ 能夠排除「語意類似但脈絡不符」的段落,只保留真正有用資訊給 LLM。


2️⃣ 上下文壓縮(Contextual Compression)


Quivr 會將重排序作為「上下文壓縮」機制的一部分:

📄 quivr_rag_langgraph.py:648–650


✅ 透過重排序,篩出最具價值的段落,節省 LLM 的 token 空間,讓回答品質更集中有效。


3️⃣ 支援動態檢索(Dynamic Retrieval)


在 Quivr 的動態檢索機制中,重排序扮演重要角色:

📄 quivr_rag_langgraph.py:700–704


✅ 系統會根據查詢需求擴大上下文,但仍透過重排序來保證「擴大後的內容仍保持高相關性」。


4️⃣ 可自訂的相關性門檻(Relevance Threshold)


使用者可以自訂重排序的參數(如門檻值),來調整準確率與涵蓋率的平衡:

📄 config.py:362–369

  • 高門檻(High threshold):更精準但涵蓋較窄

  • 低門檻(Low threshold):涵蓋多但可能引入雜訊


5️⃣ 多重重排序模型支援(Multi-Provider Support)


Quivr 支援多個 reranker 模型供應商,例如:

  • Cohere(預設)

  • Jina


📄 quivr_rag_langgraph.py:287–294


✅ 不同內容與查詢類型可搭配不同模型,提升彈性與表現。


6️⃣ 多語內容處理能力(Multilingual Support)


Quivr 的重排序系統支援多語處理,這對跨國文件與研究非常重要。

預設使用 Cohere 的 multilingual rerank 模型,能處理多語語境下的語意相關性:

📄 rag_config.yaml:16–24


7️⃣ 最佳化不同工作流程


重排序的設定也可以根據不同的工作流程進行調整:


📄 例如在 talk_to_file_rag_config_workflow.yaml:5–6 中設定 top_n=10

適合需要更多上下文的情境(例如技術文件、合約、長篇章)。


8️⃣ 控制 LLM 上下文長度(Token 限制)


系統會檢查經過重排序後的段落是否超過語言模型的最大輸入長度

📄 quivr_rag_langgraph.py:744–751


✅ 可避免 LLM 輸入內容被截斷,進而降低回答品質或引發錯誤。


✅ 總結:Quivr 中重排序的八大用途

功能

說明

🎯 提升檢索品質

超越向量相似度,評估語意與脈絡一致性

📦 上下文壓縮

在有限 token 空間中取得最重要資訊

🔄 動態檢索整合

與動態擴展上下文策略緊密配合

⚙️ 可調式相關性閾值

支援使用者自訂查詢精準度與涵蓋範圍

🔌 多模型支援

支援 Cohere、Jina 等供應商

🌍 多語言能力

能處理跨語種文件與查詢

🧩 彈性流程設計

可搭配不同工作流程調整 top_n 數值

🧠 上下文長度控管

確保輸入內容不超出 LLM 處理限制


📌 備註:

  • Quivr 的重排序功能是建構於 LangChain 的 reranking 模組之上

  • 預設使用 Cohere multilingual reranker

  • 與 Quivr 的 動態檢索(Dynamic Retrieval) 完整整合,是其核心優勢之一


🤖 Quivr 如何連接至 LLM 模型


是的,Quivr 是透過呼叫各家語言模型服務商的 API 來與 LLM 建立連線。根據原始碼,Quivr 使用一個專門的 LLMEndpoint 類別來處理這些連線。


🧱 核心架構:LLMEndpoint


Quivr 連接 LLM 的主要元件是 core 模組中的 LLMEndpoint 類別:

📄 參考:llm_endpoint.py:187-193


此類別提供一個統一的介面,用來與不同 LLM 服務商(如 OpenAI、Anthropic 等)溝通,並透過 LLMEndpointConfig 物件來指定使用哪一家模型與相關設定。


✅ 支援的 LLM 供應商


Quivr 原生支援下列模型供應商,透過 API 方式整合:

  • OpenAI(預設)

  • Azure OpenAI

  • Anthropic(Claude)

  • Mistral AI


📄 供應商定義在 config.py:68-74 的 DefaultModelSuppliers 列舉中。


🔄 API 呼叫流程


Quivr 是透過 LangChain 函式庫 來實作與 LLM 的實際 API 連線邏輯。


當你初始化 LLMEndpoint 時,系統會根據設定建立對應的 LangChain 客戶端:


📄 參考:llm_endpoint.py:207-209


例如:

  • 使用 OpenAI 時,會建立 ChatOpenAI 實例:

    📄 llm_endpoint.py:237-247

  • 使用 Azure OpenAI

    📄 llm_endpoint.py:211-226

  • 使用 Anthropic Claude

    📄 llm_endpoint.py:227-236

  • 使用 Mistral AI

    📄 llm_endpoint.py:249-257


🔐 API 金鑰管理


Quivr 透過 環境變數 管理各家 API 金鑰:

  • 你只需設定像 OPENAI_API_KEY 的變數,Quivr 會自動讀取。

    📄 參考:config.py:287-304


🧠 Brain 類別如何使用 LLMEndpoint?


Brain 是 Quivr 的主控制類別,它會使用 LLMEndpoint 來與 LLM 溝通。


當你使用 brain.ask() 發問時,Quivr:

  1. 使用 LLMEndpoint 根據設定建立對應 LLM 的連線

  2. 將查詢送入 RAG 流程(使用 QuivrQARAGLangGraph)

  3. 執行向量檢索與上下文建立

  4. 最後由語言模型產生回應

    📄 參考:brain.py:524-531,串流回應在 brain.py:533-535


🧪 API 呼叫流程範例

from quivr_core import Brain  
from quivr_core.rag.entities.config import LLMEndpointConfig, DefaultModelSuppliers  
  
# 建立一個 LLM 配置(使用 Claude)  
llm_config = LLMEndpointConfig(  
    supplier=DefaultModelSuppliers.ANTHROPIC,  
    model="claude-3-sonnet",  
    temperature=0.7  
)  
  
# 建立 Brain 實例並使用該模型  
brain = Brain.from_files(  
    name="my_brain",  
    file_paths=["document.pdf"],  
    llm_config=llm_config  
)


✅ 總結:Quivr 與 LLM 的連線方式

項目

說明

連線方式

透過 LangChain 呼叫各 LLM API

中介類別

LLMEndpoint(提供統一接口)

支援模型

OpenAI、Azure、Anthropic、Mistral

API 金鑰管理方式

使用環境變數(如 OPENAI_API_KEY

串流支援

支援即時回應串流

是否可自訂模型連線

可透過 LLMEndpointConfig 完整自定義


📌 備註

  • 預設語言模型為 OpenAI 的 GPT 系列

  • 系統為模組化設計,可輕鬆加入新的 LLM 供應商

  • 所有 LLM 功能皆整合於 LangChain 框架中,開發者不需重複實作




🧠 Quivr 與其他替代方案有何不同?


根據原始碼,Quivr 是一套以生成式 AI 為核心的 RAG(Retrieval Augmented Generation)系統,定位為你的「第二大腦」。以下說明它與其他主流系統在架構與技術實作上的不同之處。


🔧 核心架構差異


1️⃣ 明確架構主張的 RAG 實作


Quivr 採用具「架構主張」(opinionated)的設計,提供一套經優化的 RAG 流程。

📄 來源:README.md:15


與其他 RAG 框架需要繁瑣設定不同,Quivr 預設了合理的處理步驟,讓開發者專注於應用本身,而不必深入理解底層檢索邏輯。


2️⃣ 支援多家 LLM 模型供應商


與某些只支援單一語言模型的工具不同,Quivr 支援多家模型:

📄 來源:README.md:16

  • OpenAI

  • Anthropic(Claude)

  • Mistral

  • Google Gemma


讓你可依需求自由切換模型、控制成本與效能。


3️⃣ 通用文件格式與自定義解析器支援


Quivr 可處理多種常見文件格式,並允許加入自定義解析器。

📄 來源:README.md:17


相比許多工具只能處理特定檔案,Quivr 的彈性更高。


4️⃣ 基於 LangGraph 的可組合式工作流程


Quivr 使用 LangGraph 實作工作流程,流程以「有向圖」組成,可自由調整處理節點。

📄 來源:quivr_rag_langgraph.py:254-275


例如:你可以決定是否加入歷史過濾、查詢改寫、動態檢索等步驟。


⚙️ 技術實作層面的差異


1️⃣ 向量式知識表示 vs 傳統知識圖譜


Quivr 採用向量方式表示知識(語意相似度),而非明確建模實體關係。

📄 brain.py:87-100


這讓它更適合自然語言查詢與非結構化文件處理。


2️⃣ 支援動態檢索(Dynamic Retrieval)


Quivr 可根據查詢內容自動調整檢索段落數,處理複雜查詢更靈活。

📄 quivr_rag_langgraph.py:675-684


多數 RAG 工具僅提供固定檢索數量。


3️⃣ 支援多種重排序器整合(Reranker)


Quivr 可搭配 CohereJina 等 reranker,提高回傳品質。

📄 quivr_rag_langgraph.py:277-298


且模型與參數設定可輕鬆切換。


🔄 與其他具體工具的比較

工具

Quivr 特點

LlamaIndex

LlamaIndex 更靈活,但設定較複雜;Quivr 則是開箱即用、預設佳

LangChain

Quivr 建構於 LangChain 上,但用 Brain 類別封裝更高層次抽象

知識圖譜

Quivr 使用自然語言 + 向量搜尋,不需 Schema;知識圖譜則依賴 SPARQL、關係模型

商業 RAG 系統

Quivr 開源可自架設;商用方案多為封閉雲端系統,彈性與隱私較受限


🎯 適用情境


Quivr 特別適合以下用途:

  • ✅ 個人知識管理:建立可查詢的文件、筆記庫

  • ✅ 開發者應用整合:Python API 易於嵌入各種應用

  • ✅ 自訂 RAG 工作流程:適用於特定領域的知識問答流程

  • ✅ 多 LLM 環境:方便測試或切換模型供應商


📌 Quivr 的關鍵差異總結

特性

說明

🎯 架構主張明確

預設合理流程,簡化使用,但仍可自訂

🔄 多 LLM 支援

可自由切換 OpenAI、Anthropic、Mistral 等

📂 文件支援全面

支援多格式且可客製解析器

🧠 可組合的圖形流程

基於 LangGraph,節點流程彈性大

🔍 動態檢索能力

根據查詢內容自動擴展上下文

🔓 完全開源可自架設

適合對資料安全與彈性有要求的使用者


📝 備註

  • Quivr 為活躍開發中專案,近期有持續 commit 與功能新增

  • 架構模組化,可輕鬆替換嵌入模型、向量資料庫、排序器

  • 兼具入門友好性進階擴展性




💡 Quivr 使用的演算法說明


根據 Quivr 的原始碼架構,我們可以了解其所採用的多種演算法,這些演算法涵蓋了從文件處理、檢索、重排序到答案生成等 Retrieval Augmented Generation(RAG,檢索增強生成)工作流程的各個環節。


1️⃣ 文件處理與切分演算法


🔹 遞迴式字元切分(Recursive Character Splitting)

  • 對於純文字文件,Quivr 採用遞迴式字元切分演算法,將文件拆分為可管理的區塊,並維持一定重疊。

  • 功能:

    • 控制每段文字的大小

    • 維持段落間的語境連貫性

    • 遞迴處理整份文件直到完成


🔹 Tiktoken 分段

  • 對於較複雜文件,則使用 OpenAI 的 Tiktoken 分詞器,按語意分段。

  • 優點:

    • 與 LLM 使用相同的分詞規則

    • 保證每段不超過 token 限制

    • 保持語意一致性


2️⃣ 向量嵌入與相似度檢索


🔹 向量嵌入(Vector Embedding)

  • Quivr 預設使用 OpenAI 的嵌入模型,將文本轉換成向量表示,以利後續檢索。


🔹 向量相似度搜尋(Vector Similarity Search)

  • 使用 Facebook AI 所開發的 FAISS 工具執行相似度搜尋。

  • 演算法特點:

    • 計算使用者查詢與文件向量的相似度

    • 回傳前 K 個最相似的結果

    • 可根據文件 metadata 加以篩選


3️⃣ 結果重排序演算法(Reranking)


🔹 兩種支援模型:

  • Cohere Rerank:使用 Cohere 提供的重排序模型

  • Jina Rerank:使用 Jina AI 提供的模型作為替代

  • 重排序流程會結合 contextual compression retriever,以提昇檢索品質與語境相符度。


4️⃣ RAG 工作流程演算法


🔹 LangGraph 工作流程引擎

  • Quivr 採用 LangGraph 架構建立工作流程圖(有向圖)來進行 RAG 流程控制。

  • 優點:

    • 彈性的步驟組合與控制流程

    • 支援條件分支與外部工具整合


🔹 查詢改寫與歷史過濾

  • 包含查詢重寫與對話歷史過濾演算法,用以提升語意檢索準確性。


🔹 語境壓縮的文件檢索

  • 工作流程中將:

    1. 查詢向量比對初步候選資料

    2. 套用重排序

    3. 根據相似度與語境壓縮結果過濾最終答案來源


5️⃣ 答案生成演算法(Answer Generation)


🔹 提示工程(Prompt Engineering)

  • 為 LLM 設計精緻提示,以引導產出高品質答案。


🔹 串流式回答生成(Streaming Response Generation)

  • 為即時聊天回應設計的串流演算法。

  • 功能:

    • LLM 回傳時逐塊處理

    • 即時解析與格式化

    • 回傳格式化的回應段落與 metadata


6️⃣ 語言辨識(Language Detection)

  • 透過語言偵測演算法自動判斷輸入文件語言,以決定後續處理方式。


7️⃣ 設定與客製化能力

  • 所有上述演算法均可透過設定檔(如 rag_config.yaml)進行客製化,包括:

    • 分段大小與重疊程度

    • 選用哪個 Reranker 模型

    • 使用哪個 LLM 及其參數

    • 向量搜尋的 K 值與篩選條件等


📌 重點總結:Quivr 所使用的核心演算法

類別

演算法名稱

文本切分

遞迴式字元切分、Tiktoken 分段

向量處理

向量嵌入生成、FAISS 向量相似度搜尋

結果排序

Cohere 與 Jina 重排序模型

工作流程執行

LangGraph 導向圖結構

回答生成

提示工程、串流式回答產生

語言辨識

自動偵測文件語言

使用者自定義設定

YAML 設定檔調整流程參數

這些演算法組成 Quivr 的意見導向型 RAG 系統,能有效整合文件內容,進行檢索與問答回應,是一個可擴展且靈活的 AI 知識助理核心架構。




🔧 Quivr RAG 系統中的建議演算法組合


根據 Quivr 的原始碼與設定邏輯,我們可以歸納出多種適用於不同場景的演算法組合。以下是這些組合的運作邏輯、優缺點比較,以及適用情境說明。


1️⃣ 標準 RAG 管線組合


✅ 組合一:OpenAI + FAISS + Cohere Reranker(預設組合)

  • 嵌入模型:OpenAI Embedding(default_embedder

  • 向量資料庫:FAISS(Facebook AI 相似度搜尋)

  • 重排序器:Cohere 的 rerank-multilingual-v3.0

  • 語言模型(LLM):OpenAI GPT 系列(預設為 gpt-3.5-turbo


優點

  • OpenAI 高品質嵌入模型

  • FAISS 提供快速的相似度搜尋

  • Cohere 多語言模型具優秀排序能力

  • 適用於大多數一般用途情境


缺點

  • 嚴重依賴外部 API 服務

  • 成本偏高(因使用 OpenAI 與 Cohere)


✅ 組合二:OpenAI + FAISS + Jina Reranker

  • 與組合一類似,但重排序使用 Jina AI 模型


優點

  • 與 Cohere 模型略有不同,對某些領域可能更合適

  • 當 Cohere 不可用時可作為替代方案


缺點

  • 仍依賴外部服務

  • 執行表現可能依資料領域而異


2️⃣ 自定義工作流程組合


✅ 組合三:動態檢索 + 擴展語境(Dynamic Retrieval with Expanded Context)

  • 動態檢索邏輯:根據查詢複雜度自動調整檢索段數

  • 使用模型:建議 GPT-4 或其他支援長上下文的模型


優點

  • 根據查詢內容自動擴大語境

  • 適用於需要更多背景資訊的複雜問題

  • 善用 LLM 的大輸入長度


缺點

  • Token 使用增加,費用上升

  • 多輪檢索導致速度變慢


✅ 組合四:全文件語境的自定義工作流程(Custom Workflow with Document Context)

  • 策略:同時取得文件相關段落與完整語境資訊

  • 設定:使用低溫度 LLM(如 0.3)提高答案一致性


優點

  • 能維持上下文連貫性,答案更完整

  • 適合結構化文檔問答需求


缺點

  • Context token 使用量增加

  • 有機會引入部分不相關段落


3️⃣ 特殊應用場景組合


✅ 組合五:多語言處理(Multilingual Processing)

  • 額外元件:自動語言偵測演算法


優點

  • 適合處理多語種資料

  • 能跨語言提供檢索與回答


缺點

  • 在專業領域文件表現可能不如單語專用模型


✅ 組合六:串流回應 + 函式呼叫(Streaming + Function Calling)

  • 特色:實現即時回答的串流輸出,支援功能調用格式輸出


優點

  • 回應即時顯示,提高互動性

  • 支援結構化輸出(如 JSON)


缺點

  • 需使用支援 Function Calling 的 LLM

  • 實作較為複雜


📊 組合比較表

組合名稱

速度

回答品質

成本

適用情境

OpenAI + FAISS + Cohere

快速

通用場景

OpenAI + FAISS + Jina

快速

重排序替代方案

動態檢索 + 擴展語境

中等

非常高

非常高

複雜查詢

自定義工作流程(完整文件語境)

中等

保持文件語境完整性

多語言處理組合

快速

多語優秀

國際化、多語環境

串流回應 + 函式呼叫

快速

高互動性應用


🧪 範例:實作動態檢索組合

from quivr_core import Brain  
from quivr_core.rag.entities.config import RetrievalConfig, WorkflowConfig, NodeConfig  
  
# 建立自定義工作流程
workflow_config = WorkflowConfig(  
    name="Dynamic Retrieval",  
    nodes=[  
        NodeConfig(name="START", edges=["filter_history"]),  
        NodeConfig(name="filter_history", edges=["dynamic_retrieve"]),  
        NodeConfig(name="dynamic_retrieve", edges=["generate_rag"]),  
        NodeConfig(name="generate_rag", edges=["END"]),  
    ]  
)  
  
# 建立檢索設定
retrieval_config = RetrievalConfig(  
    workflow_config=workflow_config,  
    k=30,  # 初始檢索數量  
    reranker_config={"top_n": 10, "supplier": "cohere"},  
    llm_config={"model": "gpt-4", "max_context_tokens": 8000, "temperature": 0.3}  
)  
  
# 啟用自定義設定
brain = Brain.from_files(  
    name="My Knowledge Base",  
    file_paths=["document1.pdf", "document2.txt"],  
)  
  
answer = brain.ask("有哪些深入見解可以提供?", retrieval_config=retrieval_config)


✅ 建議使用情境

  • 一般使用者:建議從組合一開始(OpenAI + FAISS + Cohere)

  • 進階查詢/研究用途:組合三(動態擴展語境)最合適

  • 需要完整文件語境時:組合四

  • 多語使用者或國際化需求:組合五(支援語言偵測)

  • 互動式應用(如 AI 助手 UI):組合六(支援串流與函式輸出)


🔧 

  • 所有組合均可依照 rag_config.yaml 調整參數

  • 效果會因資料類型與查詢複雜度而異

  • Quivr 架構彈性高,可自由替換或自建模組組合


類似 QuivrHQ/Quivr 的商業工具

[deepwiki]

根據我對 Quivr 倉庫的分析,我可以辨識出幾個具有類似功能的商業工具。首先,讓我們釐清 Quivr 的主要功能:


Quivr 是什麼?


Quivr 是一個檢索增強生成(Retrieval Augmented Generation, RAG)系統,能協助你打造「第二大腦」,透過 AI 處理各類文件,建立知識庫,並讓你查詢其中的資訊。

參考來源:README.md 第11行


Quivr 的主要特色

  • 有立場的 RAG 實作:快速且高效的 RAG 架構(README.md 第15行)

  • 支援多種大型語言模型(LLM):可與 OpenAI、Anthropic、Mistral、Gemma 等搭配使用(README.md 第16行)

  • 檔案格式多樣:支援處理 PDF、TXT、Markdown 等格式(README.md 第17行)

  • 可自訂化 RAG 架構:允許整合網路搜尋、工具等其他自訂功能(README.md 第18行)


類似的商業工具


以下是提供類似功能的商業替代方案:

  • Perplexity AI:一款商業化的 AI 搜尋引擎,透過 RAG 提供具資料來源的解答,來自網路與文件

  • Anthropic Claude with Knowledge:提供文件理解與 RAG 功能

  • OpenAI 的 ChatGPT 搭配檢索功能:可上傳並查詢文件中的特定知識

  • Pinecone:具備 RAG 功能的向量資料庫平台,適用於建構 AI 應用

  • Vectara:提供 RAG 功能的 AI 搜尋平台

  • LlamaIndex(原名 GPT Index):雖為開源,但支援商業部署

  • Kagi Search:一款具備 RAG 功能的 AI 搜尋引擎

  • mem.ai:個人 AI 知識助理,用於整理與管理資訊

  • Notion AI:結合 AI 功能的文件平台,用於知識管理

  • Qdrant Cloud:可用來建立 RAG 系統的向量資料庫服務


Quivr 的差異化優勢


Quivr 的最大特色在於高度可自訂,並以 Python 為基礎實作 RAG,方便開發者整合至自己的應用中。

相較於一些封閉式商業平台,Quivr 允許用戶自由選擇 LLM 提供者,並調整 RAG 工作流程以符合自身需求。

參考來源:brain.py 第87至100行


備註:

  • 此比較聚焦於 Quivr 所提供的核心 RAG 功能

  • AI 知識工具的商業市場正在快速變化中

  • 部分工具功能較為通用,但也包含 RAG 功能

  • 各平台在價格、易用性與功能細節方面皆有所差異


got


Commercial RAG and Conversational AI Platforms


Retrieval-Augmented Generation (RAG) is now a core paradigm for building AI assistants and knowledge systems. Quivr (open-source) exemplifies a full-stack RAG solution – ingesting documents (PDFs, text, Markdown), configuring retrieval workflows (via YAML), supporting multiple LLMs, and offering chat interfaces with memory. Many commercial SaaS and enterprise platforms offer analogous capabilities, often as managed services or developer SDKs. These range from AI orchestration suites to specialized knowledge bots and retrieval APIs. Below we survey notable platforms, highlighting their RAG architecture, customization, data ingestion, LLM support, and integration features.


Enterprise AI Platforms and RAG Orchestration


ZBrain (Enterprise Generative AI Platform): ZBrain is a full-stack enterprise AI platform for building secure, data-driven assistants. It lets teams ingest private data (documents, URLs, databases) in many formats (PDF, TXT, CSV, JSON) into a unified knowledge base . Data is chunked and stored in vectors (agnostic to the backend store) for fast retrieval. ZBrain supports diverse LLMs – from proprietary models (GPT-4, Claude 3.5/4, Google Gemini) to open-source (LLaMA, Gemma, Mistral) – and can intelligently route queries between them . Its “Flow” low-code interface (and YAML-like configs) lets developers stitch together multi-step AI workflows, fetch real-time data, and integrate external tools/APIs. ZBrain also provides APIs/SDKs for custom apps, human-in-the-loop feedback loops, and built-in guardrails. In short, it offers a managed, model- and cloud-agnostic RAG pipeline: “advance knowledge base” ingestion, prompt augmentation, agent orchestration, and evaluation, all without heavy coding . (Target: enterprises; pricing by quote.)


Harvey.ai (Legal AI Assistants): Harvey is an AI platform tailored to legal and professional services. Its “Assistant” and “Vault” products exemplify enterprise RAG: user documents (briefs, contracts, regulations) are ingested and indexed in high-performance vector databases, enabling fast search and grounded answers. As Harvey notes, it “builds high-performance RAG systems by leveraging enterprise-grade vector databases for speed, accuracy, and security” . The platform supports multiple data sources – short-lived chat uploads (“Assistant” docs) and long-term project vaults – and can also query public legal databases. Query workflows are powered by LLMs but constrained by the retrieved context, ensuring grounded results. Harvey emphasizes privacy and compliance: everything runs in isolated, secure environments. (Target: law firms, financial/legal enterprises; pricing by quote.)


Cloud-Native RAG Services: All major cloud vendors now offer managed RAG services that mirror Quivr’s workflow at scale:

  • AWS Bedrock Knowledge Bases: Amazon’s Bedrock ML platform includes Knowledge Bases, a fully managed RAG pipeline. It automates ingestion (from S3, databases, web, SaaS sources like Salesforce/SharePoint) into a knowledge index and vector store . Bedrock KB handles multi-format content (including images, tables, PDFs), offers built‑in text chunking (semantic, fixed, or custom via Lambda), and can even translate natural-language queries into SQL for structured data. At query time it retrieves relevant chunks to augment any Bedrock model’s prompt. In summary, “the entire RAG workflow from ingestion to retrieval and prompt augmentation [is] implemented” by the service . Pricing is pay-as-you-go based on usage (tokens, storage). (Target: enterprises using AWS; billed via AWS.)

  • Google Vertex AI – RAG Engine: Google Cloud’s Vertex AI now offers a RAG Engine, a managed pipeline that ties data ingestion to LLM prompting. It ingests documents (Cloud Storage, Drive, etc.) and builds an index (“corpus”). The Vertex RAG Engine “enriches the LLM context with additional private information” to reduce hallucinations . Developers can use Google’s own models (Gemini) or bring other LLMs. The service handles splitting/chunking, embedding, and retrieval under the hood. (Target: GCP customers; pay-as-you-go.)

  • Azure AI Search (formerly Azure Cognitive Search): Azure’s enterprise search service has deep RAG integration. Azure AI Search is described as “an enterprise knowledge retrieval system that powers sophisticated RAG applications… delivering end-to-end RAG systems built for app excellence, enterprise readiness and speed to market” . It supports ingestion from SharePoint, SQL, Blob storage, etc., and lets you augment Azure OpenAI or other models with retrieved docs. Azure AI Search features semantic ranking, OCR, vector capabilities, and comes with enterprise security/compliance. Pricing includes search units and AI add-ons. (Target: Azure-based enterprise apps; usage-based pricing.)


These platforms focus on large-scale data and orchestration. They generally provide managed ingestion pipelines, vector search, and prompt orchestration, often with low-code configuration or API-driven workflows. They support multiple LLMs (typically the vendor’s foundation models plus OpenAI’s GPT or Anthropic’s Claude), let you plug in knowledge sources, and handle the RAG logic transparently.


Knowledge-Driven Chatbots and Assistants


Several companies offer RAG-based chatbots or “AI copilot” products that let businesses query their documents, manuals, and wikis via natural language:

  • PrivateGPT (PrivateFindr): PrivateGPT is a commercial knowledge-bot that integrates deeply with an organization’s data while preserving privacy. Its marketing emphasizes that it “seamlessly integrates with your data and tools while addressing your privacy concerns” . Users can upload or link to company documents, and PrivateGPT will index them for chat queries. It boasts enterprise features like granular access controls and “flexible hosting options – on premises, in your cloud, or our secure cloud” . The interface is a chat where staff can “ask anything to your company’s knowledge base” and get grounded answers. PrivateGPT also supports connecting to common sources (Slack, SharePoint, etc.) so the assistant always has up-to-date info. (Target: mid-market to enterprise with privacy requirements; pricing unknown/quote.)

  • Dataspot (by PC7 – “Byte”): Dataspot is an AI research assistant designed for any content. It supports uploading any file type – PDFs, Word docs, images, even code or YouTube videos – and uses AI to answer questions or summarize. As described by a review, Dataspot “effortlessly manages any file type you present… identify and extract the pertinent details from any file format, including PDFs, Word documents, images, or code files” . The user chat interface (nicknamed “Byte”) can also crawl a webpage or transcript. This is very similar to Quivr’s goal of “chat with your docs” – with Dataspot you literally chat and it pulls from your uploaded data. It’s positioned for knowledge workers to “bid farewell to the endless search for information buried deep within your files” . Dataspot is offered on a SaaS model (possibly with free trials), and is aimed at researchers, students, and teams. (Target: knowledge workers, research teams; pricing not widely advertised – likely subscription.)

  • CustomGPT.ai: (RAG API) CustomGPT offers a developer-friendly RAG API/service. While their site is marketing-heavy, their key pitch is “production-ready, secure, reliable RAG applications” via an API. They tout “no-code development” plus a full RAG-API, allowing you to upload content, set a knowledge base, and call a single API to chat or retrieve answers. It supports multiple LLMs (OpenAI, Anthropic, others) and can integrate with CRM or helpdesk systems. Pricing includes a free tier and usage-based billing. (Target: developers and enterprises building branded chatbots; pricing has free/paid tiers.)

  • Hebbia: Hebbia is an AI platform aimed at finance, legal, and corporate use cases. It started as a semantic search engine for financial documents. Today Hebbia’s platform can ingest “any file type or API” and connect to public sources (SEC filings, transcripts, etc.) . It then provides an interface to query across all that data. For example, users can ask a due-diligence question and Hebbia will search both private docs and public filings. They emphasize security – they claim to be “the first and only encrypted search engine on the market” . Hebbia is enterprise-grade, trusted by financial firms, and targets analysts and lawyers. (Target: financial/legal enterprises; pricing by quote.)

  • Beloga: Beloga is an “intelligent knowledge hub” for individuals and teams. It works a bit differently: instead of chat, it captures and unifies your personal or team data (notes, documents, bookmarks, code snippets) in one place. As described, Beloga “consolidates notes, files, documents, and links from various sources into one unified platform” and lets you “search across multiple sources simultaneously” . While not explicitly a Q&A bot, it uses AI-powered search over your data. This is akin to a personal knowledge base or “second brain”. Beloga has free and paid plans (team plan $20/user/month ), making it accessible to small teams. (Target: power users, small teams; pricing starts ~$10-20/mo.)


Each of these tools focuses on querying custom knowledge with LLM help. They typically allow bulk ingestion (upload files or connect repositories), support multiple content types, and then let end-users chat or search. Most provide web UI and APIs/SDKs. They vary in target: PrivateGPT and Hebbia are for enterprises/teams with proprietary data; Dataspot and Beloga are accessible to individuals; CustomGPT.ai and PrivateGPT have developer/enterprise SDKs; Hebbia, ZBrain, Azure/AWS/Google require more IT setup.


Retrieval APIs and Integrations


Beyond end-user apps, some companies offer LLM-ready search APIs to embed RAG into custom applications:

  • Linkup: Linkup is a search API optimized for LLMs and agents. Unlike document chatbots, it indexes the open web and premium data sources in real time. Linkup’s API lets your agent query fresh web data (news, company info, etc.) and returns LLM-ready results. Its features include AI-powered search, “fair and broad” web coverage, and integration hooks for tools (e.g. a Google Sheets plugin). Linkup positions itself as an RAG enabler: “empowers AI agents to seamlessly connect to the Internet” and “enables scalable and efficient RAG processes over the Internet” . It’s agnostic of the LLM – clients use it to fetch context and then feed that into GPT, Claude, etc. Pricing is pay-as-you-go (token-based) with a free tier . (Target: developers and AI product teams needing real-time web data.)

  • Weaviate, Pinecone, etc. (Vector DBs + SDKs): Many vector database providers (Weaviate, Pinecone, etc.) now offer tutorials and services for RAG. For example, Weaviate Cloud or Pinecone with LangChain integrations can ingest documents and serve query embeddings. These aren’t full chatbot products, but they power RAG backends with APIs and some orchestration. They usually support file/DB ingestion via tools or pipelines, and allow any LLM to be plugged in. Pricing is typically based on storage and query usage. (Target: developers building custom RAG systems.)


Feature Comparison


The table below summarizes key features, pricing, and target users for each solution. For brevity we highlight core RAG-related capabilities:

Tool / Service

Core RAG & AI Features

Pricing

Target Users

ZBrain

Enterprise AI platform: ingests docs/URLs/DBs (PDF, TXT, CSV, JSON) into a unified vector KB ; low-code workflow builder; connects to APIs/agents; supports GPT-4/Claude/Llama/Gemini/Mistral ; built-in evaluation and memory.

By quote (enterprise SaaS)

Large enterprises, Dev teams

Harvey.ai

Legal AI suite: “Assistant” for chat and “Vault” for docs. Enterprise-grade RAG using vector DBs (for speed, accuracy, security) ; ingests contracts/regulations; context-grounded answers with citations.

By quote (enterprise)

Law firms, financial firms

AWS Bedrock Knowledge Bases

Fully-managed RAG pipeline on AWS. Ingests data from S3, databases, web/SaaS sources; auto-chunks content (incl. images, tables) ; supports multiple vector stores; natural-language-to-SQL for structured data; integrated with Bedrock LLMs and any external model.

Pay-as-you-go (AWS usage)

Enterprises on AWS

Google Vertex AI (RAG Engine)

Managed RAG component in Vertex AI. Ingests GCS/Drive data, builds searchable index; augments any LLM (e.g. Gemini) with private data ; handles chunking/embedding. Part of Vertex AI platform.

Pay-as-you-go (GCP usage)

Enterprises on Google Cloud

Azure AI Search

Enterprise knowledge search + RAG. Crawls SharePoint, SQL, Azure Blob, etc.; semantic/rerank engines; integrates with Azure OpenAI or other LLMs for conversational Q&A; OCR support; vector index. Full enterprise security/compliance.

Pay-as-you-go (search units + AI)

Enterprises on Azure

PrivateGPT (PrivateFindr)

AI chatbot for corporate knowledge. Ingests private docs, wikis, databases. Chat interface with memory; secure by design (“your data stays yours”); flexible hosting (on-prem, cloud) ; connects to tools like Slack/Confluence.

SaaS pricing (quote)

SMEs and enterprises with private data

Dataspot (Byte)

AI-powered chat for any content. Users upload any file (PDF, DOCX, image, code, video transcript); the bot “identifies and extracts pertinent details” from files ; also answers queries on websites/YouTube. Ready-to-use SaaS.

Subscription (free trial, paid plans)

Knowledge workers, researchers

CustomGPT.ai

Developer-friendly RAG API. Upload content or connect sources; call API for chat or answers. Integrates LLMs (GPT, Claude, etc.); also no-code UI builder. Emphasizes low hallucination and analytics.

Freemium + usage tiers (API calls)

Developers, enterprise apps

Linkup

Web-search API for agents. Provides LLM-optimized web search (“fast, accurate results”); integrates premium data sources; returns JSON snippet context for RAG. Pricing: flexible pay-as-you-go .

Freemium + usage (API tokens)

AI developers, agent builders

Hebbia

AI research platform (finance/legal). Ingests “any file type or API” and public corpora ; semantic search and Q&A over large datasets; enterprise security (encrypted).

By quote (enterprise)

Financial institutions, law

Beloga

Personal/team “knowledge hub”. Captures notes, docs, bookmarks, code; AI-powered multi-source search ; chat-like interface for searching across your content. Pricing: free & paid tiers (e.g. $10–$20/user·mo ).

SaaS (tiered plans, ~$10–20/user·mo)

Individuals, small teams

Each commercial tool above offers some RAG-like retrieval plus generation capability. They differ in scope: platforms like ZBrain, AWS, Google and Azure aim at large-scale, highly-customizable pipelines, whereas tools like PrivateGPT, Dataspot and Beloga are “chat with your data” solutions for business knowledge or personal productivity. API/SDK access is common (especially in platforms and Linkup), enabling integration into custom apps.


Sources: Vendor sites, tech blogs, and product reviews provide these details. Each entry above is derived from such sources and official documentation.