RAG Arena 是一個開源 Next.js 項目,由我的 mendable.ai 製作,它與 LangChain 交互,提供 RAG 聊天機器人體驗,其中查詢會收到多個回應。用戶對這些回應進行投票,然後將其清晰地顯示所使用的檢索器,透過資料 RAG 方法來區分聊天機器人。該專案利用 Supabase 進行資料庫操作,並具有顯示資料庫資料的即時排行榜。
確保您的系統上安裝了pnpm
。如果沒有,請透過以下方式安裝:
npm install -g pnpm
克隆專案儲存庫:
git clone https://github.com/mendableai/rag-arena
導航至專案目錄並安裝依賴項:
cd RAG-arena
pnpm i
配置您的環境變數:
# probably in: https://platform.openai.com/api-keys
OPENAI_API_KEY=
# probably in: https://supabase.com/dashboard/ project>project settings>api
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PRIVATE_KEY=
# probably in: https://console.upstash.com/redis/
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
PRODUCTION=false
PYTHON_MICRO_SERVER=
啟動開發(nextjs)Web伺服器:
pnpm dev
cd python_service
poetry install
*(如果你沒有詩歌,只需使用 pip install詩添加 id)
對於 Graph Rag 檢索器,您需要建立圖形存儲,或透過取消註解以下行讓伺服器自動執行「create_neo4j_graph_store」函數(本地化在/python_service/retrievers/neo4j_retriever.py
中):
# if not os.path.exists(storage_dir) or not os.listdir(storage_dir):
# create_neo4j_graph_store()
這將需要一段時間,具體取決於data/chunks
中使用的資料。最後,您的neo/storage
目錄將填入本地圖形儲存的持久性資料。
您將需要載入並快取索引,以便可以使用 Graph RAG。 load_index()
函數在python_service/app.py
中為您執行此操作。因此,在第一次執行時,可能需要一段時間才能建立放置在python_service/index/cache
中的快取 .pkl 檔案。
poetry run flask run --debug
用瀏覽器開啟http://localhost:3000查看結果。
app/api/ingest/route.ts
RecursiveCharacterTextSplitter
進行有效的文字分割。OpenAIEmbeddings
產生文件嵌入。SupabaseVectorStore
將處理後的文件儲存在Supabase中。app/api/retrievers/dynamic-retriever/route.ts
actions/voting-system.ts
// calculation used for the elo
function calculateEloAdjustment(timesTested: number, averageTimesTested: number): number {
if (averageTimesTested === 0) return 10;
const adjustmentFactor = timesTested / averageTimesTested;
return (1 / adjustmentFactor) * 10;
}
id
、 retriever
、 elo
、 votes
、 times_tested
、 full_name
、 description
和link
。 (https://js.langchain.com/docs/modules/data_connection/retrievers/)
本節概述了app/api/retrievers/dynamic-retriever/tools/functions.ts
中定義的各種 RAG 函數,詳細說明了它們在專案架構中的用途和實作。這些功能在文件 RAG 流程中發揮著至關重要的作用,利用不同的策略和技術來優化效能和準確性。
歡迎貢獻!請遵循標準的分叉和拉取請求工作流程。確保您遵守專案中存在的編碼風格和模式,並為新功能或錯誤修復編寫測試。
RAG Arena 是開源的,並根據 MIT 許可證發布。有關詳細信息,請參閱許可證文件。