mcpField
R
RagWiser

RagWiser

ローカル
github.com/RobertoDureファイル・ストレージ273 週間前に更新

RagWiser について

RagWiserはSpring Boot製のPDF質問応答システムです。文書を自然言語で検索・質問したいユーザー向けで、PostgreSQLのpgvectorに文書ベクトルを保存し、ツールコールバックでRAG機能を提供できます。

主な機能

  1. 01REST APIによるPDFアップロード
  2. 02テキスト抽出、分割、ベクトル化
  3. 03文書のセマンティック検索
  4. 04検索内容に基づく回答生成
  5. 05Reactのアップロード・質問応答画面
  6. 06ツールコールバックによるRAG連携

活用シーン

  1. 01PDFをアップロードして内容を質問
  2. 02質問に関連する文書箇所の検索
  3. 03画面で生成された回答を確認
  4. 04AIシステムにツールとしてRAGを提供

MCP 対応

READMEでは、Spring AIのツールコールバックを通じて他のAIシステムにRAG機能を提供すると説明されていますが、MCPサーバーやMCPクライアントとの連携は明記されていません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

RagWiser

RagWiserは、Spring Bootで構築された検索拡張生成(RAG)システムです。ユーザーはPDFドキュメントをアップロードして処理し、その内容について自然言語で質問できます。

プロジェクト概要

RagWiserは、Spring AIとPGVectorを使用して高度なドキュメント質問応答システムを構築します。PDFドキュメントを処理し、ベクトル化した表現をpgvector拡張機能を備えたPostgreSQLデータベースに保存します。また、関連するコンテキストを検索し、OpenAIのGPTモデルを使用して回答を生成することで、ユーザーからの質問に答えます。

機能

  • PDFドキュメントのアップロード:REST APIを通じてPDFドキュメントをアップロードして処理します
  • ドキュメントのベクトル化:PDFからテキストを自動的に抽出してチャンクに分割し、埋め込みを保存します
  • セマンティック検索:自然言語を使用してドキュメントを検索します
  • RAGを活用した回答生成:ドキュメントの内容に基づいた正確な回答を取得します
  • Spring AIとの統合:ベクトルストアとLLMの統合にSpring AIを活用します
  • Dockerサポート:pgvector拡張機能を備えたPostgreSQLをコンテナ化します

UI

RagWiserはユーザーインターフェースにReactを使用しており、シンプルで直感的な方法でRAGシステムを操作できます。UIを通じて、ユーザーはPDFドキュメントをアップロードし、質問をして、使いやすい画面で回答を確認できます。

RagWiser UI のスクリーンショット

技術スタック

  • Java 21
  • Spring Boot 3.3.2
  • Spring AI 1.0.0-M1
  • pgvector拡張機能を備えたPostgreSQL
  • Docker
  • OpenAI GPT-4
  • React

はじめに

前提条件
  • Java Development Kit(JDK)21
  • DockerおよびDocker Compose
  • OpenAI APIキー
  • NodeJS
セットアップとインストール
  1. リポジトリをクローンします:

    git clone https://github.com/RobertoDure/RagWiser.git
    cd RagWiser
    
  2. src/main/resources/application.yamlでOpenAI APIキーを設定します:

    spring:
      ai:
        openai:
          api-key: YOUR_OPENAI_API_KEY
    
  3. pgvectorを使用してPostgreSQLデータベースを起動します:

    docker-compose up -d
    
  4. Spring Bootバックエンドアプリケーションをビルドして実行します:

    ./mvnw spring-boot:run
    
  5. Reactフロントエンドアプリケーションを実行します:

     cd frontend
     npm install
     npm start
    
APIエンドポイント
PDFドキュメントをアップロード
POST /api/rag/upload
Content-Type: multipart/form-data

パラメーター:

  • file:PDFファイル(必須)
質問する
GET /api/rag?question=YOUR_QUESTION_HERE

パラメーター:

  • question:回答する質問(デフォルト:「List all the Articles in the Irish Constitution」)

仕組み

  1. ドキュメント処理:

    • PDFドキュメントは/api/rag/uploadエンドポイントからアップロードされます
    • アプリケーションはPagePdfDocumentReaderを使用してPDFからテキストを抽出します
    • TokenTextSplitterを使用してテキストをチャンクに分割します
    • テキストチャンクを埋め込み、ベクトルデータベースに保存します
  2. 質問応答:

    • ユーザーは/api/questionエンドポイントから質問を送信します
    • システムはベクトル類似性検索を使用して、最も関連性の高いドキュメントチャンクを取得します
    • プロンプトテンプレートで質問と取得したドキュメントを組み合わせます
    • OpenAIのGPTモデルがコンテキストに基づいて回答を生成します
  3. MCPとの統合:

    • このアプリケーションは、Spring AIのTool Callbacksを使用した、ツールベースのRAG機能も提供します
    • これにより、他のAIシステムがツールとしてRAG機能を利用できます

データベーススキーマ

このアプリケーションでは、ドキュメントの埋め込みを保存するために、pgvector拡張機能を備えたPostgreSQLデータベースを使用します:

CREATE TABLE vector_store (
    id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,
    content text,
    metadata json,
    embedding vector(1536)
);

CREATE INDEX ON vector_store USING HNSW (embedding vector_cosine_ops);

設定

application.yamlの主な設定オプション:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/rag_db
    username: postgres
    password: postgres
  ai:
    openai:
      api-key: YOUR_OPENAI_API_KEY
      chat:
        options:
          model: gpt-4
  vectorstore:
    pgvector:
      index-type: HNSW
      distance-type: COSINE_DISTANCE
      dimensions: 1536
  servlet:
    multipart:
      enabled: true
      max-file-size: 100MB
      max-request-size: 100MB

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

ライセンス

このプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEファイルをご覧ください。

謝辞

  • 優れたフレームワークを提供してくれたSpring AIチーム
  • ベクトルストレージ機能を提供するPostgreSQLとpgvector
  • 強力な言語モデルを提供するOpenAI

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。