皆さん、こんにちは。
私はRAG(Retrieval-Augmented Generation)実装に取り組んでおり、その核心の目標は完全なモジュール性です。どのLLMやベクトルストアを使うかを気にせず、プライバシーのためのローカルモデルとパワーのためのクラウドAPIの間をコアロジックのリファクタリングなしでシームレスに切り替えられるシステムを望んでいました。
私は自身のRAD(Rapid Application Development)手法を用いてシステムをスリムに保ちました。このコミュニティからアーキテクチャに関するフィードバックをいただけると幸いです。
採用しているスタック:
- オーケストレーション: n8n(プロバイダー非依存を実現する「頭脳」部分)
- バックエンド: NestJS(ユーザー権限管理と安全なコンテキストアクセスを担当)
- ベクトルストア: Qdrant + PostgreSQL(メタデータ/文書整合性のため)
- 埋め込み/処理: FastAPI(ローカル埋め込みモデル接続用)
- フロントエンド: Angular
ワークフロー:
- 安全なアクセス: NestJSがユーザーとそのデータアクセス権限を検証。
- オーケストレーション: リクエストによりn8nワークフローが起動。
- ローカル埋め込み: n8nがFastAPIサービスを呼び出し、クエリをベクトルに変換(データプライバシー保持のためローカルモデルサポート)。
- ハイブリッド検索: Qdrantで上位5件を検索し、PostgreSQLから実テキストやメタデータを取得。
- アグノスティックルーティング: n8nがプロンプトを設定されたLLM(ローカルのOllamaやクラウドのGemini/OpenAI等)へルーティング。
- 信頼性: LLMが回答を生成し、元文書にマッピングされたクリック可能な引用[REF-1]を含む。
コミュニティへの質問: RAGロジックにn8nのようなワークフローオーケストレーターを使うのは過剰設計に思えますか?それとも「視覚的」デバッグやプロバイダー非依存性といったメリットは追加レイヤーの価値がありますか?
詳細な図やロジックは以下にドキュメント化しています: www.nospace.net
分離戦略に関するフィードバックをお待ちしています!




