ポートフォリオに戻る

プロジェクト詳細 ③

AIKnowledgeBaseNew

AIKnowledgeBaseNew

企業のPDF/Excel/PPT/Word等を対象とした、マルチモーダルAIナレッジ基盤(OSS)。ハイブリッド検索・非同期文書処理・VLM解析を柱に、「チャットを作る」のではなく「企業で継続運用できる回答基盤を作る」ことを狙って個人開発しました。

Python / FastAPI PostgreSQL + AGE Elasticsearch Kafka MinIO LangGraph OpenAI + Gemini

プロジェクト概要

権限を守りながら、根拠を示して答える。企業運用に耐えるマルチモーダルRAG基盤。

企業文書は画面レイアウトや遷移図、Excel表など視覚情報への依存が大きく、テキスト中心のRAGでは取りこぼしが出ます。加えて企業では権限制御と根拠提示が必須です。そこで全文・ベクトル・画像・Graphを組み合わせたハイブリッド検索と、LangGraphによる回答品質ゲートを実装し、単なる回答ではなく「継続運用できるAI基盤」として設計しました。

背景・課題

  • 表・図・レイアウトはテキスト抽出だけでは崩れる
  • 権限境界が厳しく越権参照は不可
  • 根拠を後から説明できないと業務で使えない

技術ポイント

  • ハイブリッド検索(全文+ベクトル+画像+Graph)
  • Kafkaによる非同期文書処理
  • 必要ページのみVLMで補強(精度とコストの両立)
  • LangGraph + Criticで根拠不足時は回答保留

担当(役割)

  • システムアーキテクチャ設計
  • RAG検索パイプライン設計
  • バックエンド開発
  • 評価設計(Recall / Precision / Faithfulness / Completeness)

アーキテクチャ ①

オフライン:文書取込(非同期)

アップロードは受信と状態管理に限定し、重い解析はKafka経由で非同期実行。メタ情報・検索索引・原本・関係をそれぞれ最適なストアに保存します。

flowchart TD
    U["Upload API(受信 + 状態管理)"] --> K["Kafka"]
    K --> DP["Document Processor(解析 / 分割 / 構造化 / VLM補強)"]
    DP --> PG["PostgreSQL(メタ情報 / ACL)"]
    DP --> ES["Elasticsearch(全文 + ベクトル索引)"]
    DP --> MI["MinIO(原本)"]
    DP --> GR["Graph(PostgreSQL + Apache AGE)"]

アーキテクチャ ②

オンライン:問答(LangGraph 制御)

検索段階で権限を前置適用してからハイブリッド検索を行い、LangGraphの5ステップで回答品質を担保。Criticが根拠不足と判定した場合は断定せず保留します。

flowchart TD
    Q["質問"] --> ACL["権限フィルタ(owner / public / org)"]
    ACL --> HY["ハイブリッド検索(全文 + ベクトル + 画像 + Graph / RRF融合)"]
    HY --> LG["LangGraph:Planner → Retriever → Reasoner → Critic → Answer"]
    LG --> ANS["回答 + 証拠(chunk / source / page / 画像)"]

Graph RAGの位置づけ

全文RAGの置き換えではなく「関係性を問う質問」への補強チャネルとして設計。画面遷移や依存関係などの質問時に並列で動かし、最後に融合します。

ハルシネーション対策

根拠コンテキスト制約と証跡返却を基本とし、根拠不足時はno-evidence方針で断定を回避。Faithfulness指標でオフライン評価も継続しています。