Azure-Samples/rag-postgres-openai-python

A RAG app to ask questions about rows in a database table. Deployable on Azure Container Apps with PostgreSQL Flexible Server.

解決的問題

本專案提供一個基於網頁的聊天應用程式參考實作,可回答儲存在 PostgreSQL 資料庫中的資料相關問題。它解決了將結構化資料庫查詢與非結構化自然語言搜尋結合的挑戰,從而根據私有資料提供精確答案。

運作方式

應用程式採用檢索增強生成(RAG)架構。它使用 OpenAI 嵌入 API 將使用者查詢轉換為向量,並在 PostgreSQL 中使用 pgvector 擴充功能進行向量搜尋,同時結合標準全文搜尋,透過倒數排名融合(RRF)合併結果。此外,它還使用 OpenAI 函式呼叫將自然語言查詢轉換為 SQL 過濾條件(例如,將「低於 30 美元的登山裝備?」轉換為 WHERE 子句)。

適用對象

希望使用 PostgreSQL 作為向量儲存來實作 RAG 模式的開發人員,特別是那些計畫在 Azure 上使用 Container Apps 和 Azure OpenAI 部署的開發者,同時也支援使用 Ollama 的本機開發。

主要亮點

  • 混合搜尋:結合向量搜尋與全文搜尋,提升檢索準確性。
  • SQL 轉換:利用 LLM 函式呼叫將自然語言轉換為資料庫過濾條件。
  • Azure 整合:透過 Azure Developer CLI(azd)實現簡化部署。
  • 跨平台支援:相容 Azure OpenAI、OpenAI.com 以及透過 Ollama 使用的本機模型。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案