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 を使ってベクトルに変換し、pgvector 拡張機能を用いたベクトル検索と標準的な全文検索を組み合わせたハイブリッド検索を PostgreSQL で実行します。結果は逆順ランク融合(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 を通じたローカルモデルに対応。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト