メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.jinba.io/llms.txt

Use this file to discover all available pages before exploring further.

自社のドキュメントに基づいて質問に回答する AI チャットシステムを構築しましょう。このチュートリアルでは、ナレッジベースの作成、RAG ワークフローの構築、チャットインターフェースとしてのデプロイまで、すべてのステップを順を追って説明します。

構築するもの

以下の機能を持つチャットシステムを構築します:
  1. ユーザーの質問を受け付ける(チャット、API、または AI アシスタント経由)
  2. ナレッジベースから関連情報を検索する
  3. AI モデルを使用して、ドキュメントに基づいた正確な回答を生成する
  4. ソースの参照情報付きで回答を返す

前提条件

コーディング経験は不要です。チャットパネルまたはグラフエディタを使用してシステム全体を構築できます。以下に示す YAML マニフェストは参考用であり、そのままコピーして使用できます。

アーキテクチャ概要

構築を始める前に、全体の仕組みを確認しましょう:
このチュートリアルでは Jinba ナレッジベース をメインのバックエンドとして使用します。他のバックエンドについては、末尾の代替バックエンドをご覧ください。

パート 1: ナレッジベースのセットアップ

ステップ 1: ナレッジベースの作成

1

ストレージへ移動

ワークスペースのサイドバーで ストレージ をクリックし、ナレッジベース タブを選択します。ストレージ ナレッジベース画面
2

新しいナレッジベースを作成

ナレッジベースを作成 をクリックします。わかりやすい名前を入力してください(例:「製品ドキュメント」「社内FAQ」)。ナレッジベース作成ボタン
3

ナレッジベース ID をメモ

作成後、ナレッジベース ID をメモしておきます。フローを構築する際に必要です。ナレッジベースの設定画面や URL で確認できます。ナレッジベース作成完了

ステップ 2: ドキュメントのアップロード

1

ナレッジベースを開く

ストレージページから、作成したナレッジベースをクリックします。
2

ファイルをアップロード

ファイルをアップロード または ファイルを追加 をクリックし、PDF、DOCX、またはテキストファイルを選択します。ナレッジベースへのファイルアップロード
3

処理完了を待つ

ファイルは以下のパイプラインで自動的に処理されます:
ステージ処理内容
パースドキュメントからテキストを抽出
チャンキングドキュメントを検索可能なチャンクに分割
エンベディングチャンクをベクトル埋め込みに変換
インデキシング高速類似検索のためにベクトルを保存
すべてのファイルが 「完了」 ステータスを表示するまでお待ちください。ファイル処理ステータス
ファイルサイズによっては、処理に数分かかる場合があります。ファイルの処理が完了するまで次のステップに進まないでください。

ステップ 3: 認証情報の設定

フローを構築する前に、必要なシークレットをワークスペースに保存します。
1

認証情報ページへ移動

ワークスペースの認証情報ページを開きます。
2

シークレットを追加

以下のシークレットを追加します:
シークレット名用途
JINBA_API_TOKENJinba API トークンベクトル検索の認証
KNOWLEDGE_BASE_IDステップ 1 のナレッジベース ID検索対象のナレッジベースを指定
ANTHROPIC_API_KEYAnthropic API キー (任意)Claude ベースの生成用
OpenAI API キーがなくても、OPENAI_INVOKE ツールは Jinba API クレジットで利用できます。

パート 2: RAG フローの構築

チャットシステムを動かすワークフローを作成します。

完全なマニフェスト

以下を YAML コーディングパネルに直接貼り付けできます:
# ステップ 1: ユーザーの質問を受け取る
- id: user_question
  name: Receive Question
  tool: INPUT_TEXT
  input:
    - name: value
      value: ""

# ステップ 2: ナレッジベースから関連コンテンツを検索
- id: search_knowledge
  name: Search Knowledge Base
  tool: JINBA_VECTOR_SEARCH
  config:
    - name: token
      value: "{{secrets.JINBAFLOW_WS_API_KEY}}"
  input:
    - name: query
      value: "{{steps.user_question.result}}"
    - name: knowledgeBaseId
      value: YOUR_KB_ID_HERE
    - name: topK
      value: 5
    - name: threshold
      value: 0.3
  needs:
    - user_question

# ステップ 3: 取得したコンテキストを使って回答を生成
- id: generate_answer
  name: Generate Answer
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4o
  input:
    - name: prompt
      value: |
        ## 指示
        あなたは、提供されたドキュメントに基づいて質問に回答する親切なアシスタントです。
        コンテキストに回答がない場合は、「その質問に回答するための十分な情報がありません。」と述べてください。
        常にどの出典ドキュメントから回答しているかを引用してください。

        ## コンテキスト(ナレッジベースから)
        {{steps.search_knowledge.results | dump}}

        ## ユーザーの質問
        {{steps.user_question.result}}

        上記のコンテキストに基づいて、明確で簡潔な回答を提供してください。
  needs:
    - search_knowledge

# ステップ 4: 回答を出力
- id: output_answer
  name: Output Answer
  tool: OUTPUT_TEXT
  input:
    - name: value
      value: "{{steps.generate_answer.result.content}}"
  needs:
    - generate_answer
最短ルートは上記の YAML マニフェストをそのまま貼り付ける方法です。ノードを視覚的に組み立てたい場合は、エディタ上で 4 つのノードを手動追加して設定することもできます。

代替手順: エディタでフローを手動構築する

YAML を貼り付ける代わりに、各ノードを手動で追加して構築したい場合は、以下の手順に従ってください。
1

Input Text ノードを追加する

ノードピッカーを開いて Input Text を検索し、グラフの最初のノードとして追加します。手動構築 - Input Text ノードを追加追加後、ノード名を Receive Question に変更して、チュートリアルのマニフェストと揃えます。手動構築 - Receive Question を設定
2

Vector Search ノードを追加して設定する

最初のノードの下にある + コネクタをクリックし、Vector Search を検索して JINBA_VECTOR_SEARCH ノードを追加します。手動構築 - Vector Search ノードを追加次のように設定します:
  • Token: JINBAFLOW_WS_API_KEY シークレット
  • Query: {{steps.user_question.result}}
  • Knowledge Base ID: あなたのナレッジベース ID
  • Top K: 5
  • Threshold: 0.3 手動構築 - Vector Search ノードを設定
3

OpenAI Invoke ノードを追加して設定する

Invoke ノードを追加し、OPENAI_INVOKE を選択します。手動構築 - OpenAI Invoke ノードを追加モデルバージョンを gpt-4o に設定し、YAML 例にあるものと同じプロンプトを貼り付けて、取得したナレッジベースのコンテキストだけを使って回答するようにします。手動構築 - OpenAI Invoke ノードを設定
4

Output Text ノードを追加して設定する

最後に Output Text ノードを追加します。手動構築 - Output Text ノードを追加ノード名を Output Answer に変更し、値に以下を設定します:
{{steps.generate_answer.result.content}}
手動構築 - Output Text ノードを設定

ステップごとの解説

ステップ 1: 質問の受信(INPUT_TEXT

- id: user_question
  name: Receive Question
  tool: INPUT_TEXT
  input:
    - name: value
      value: ""
INPUT_TEXT ツールはフローの入力パラメータを作成します。手動実行時にはテキストボックスが表示されます。API 経由で呼び出す場合は、リクエストボディのパラメータとなります。入力ツールの詳細を参照してください。

ステップ 2: ナレッジベースの検索(JINBA_VECTOR_SEARCH

- id: search_knowledge
  name: Search Knowledge Base
  tool: JINBA_VECTOR_SEARCH
  config:
    - name: token
      value: "{{secrets.JINBAFLOW_WS_API_KEY}}"
  input:
    - name: query
      value: "{{steps.user_question.result}}"
    - name: knowledgeBaseId
      value: YOUR_KB_ID_HERE
    - name: topK
      value: 5
    - name: threshold
      value: 0.3
  needs:
    - user_question
このステップはセマンティック検索を実行します。キーワードの完全一致ではなく、意味に基づいてコンテンツを検索します。
パラメータ理由
topK5最も関連性の高い 5 つのチャンクを返す
threshold0.3関連度の低い結果をフィルタリング
needs: [user_question] により、検索はユーザーの質問を受け取ってから実行されます。詳しくはステップモジュールオプションをご覧ください。
topK: 5threshold: 0.3 から始めましょう。回答にコンテキストが不足する場合は topK を増やし、関連性の低いコンテンツが含まれる場合は threshold を上げてください。詳しくはベクトル検索リファレンスをご覧ください。

ステップ 3: 回答の生成(LLM)

- id: generate_answer
  name: Generate Answer
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4o
  input:
    - name: prompt
      value: |
        コンテキストに基づいて回答してください...
        {{steps.search_knowledge.results | dump}}
        ...
  needs:
    - search_knowledge
{{steps.search_knowledge.results | dump}} テンプレートは検索結果をプロンプトに注入します。gpt-4o モデルにより、高品質な回答を生成します。変数とテンプレートで詳しく学べます。

ステップ 4: 回答の出力(OUTPUT_TEXT

- id: output_answer
  name: Output Answer
  tool: OUTPUT_TEXT
  input:
    - name: value
      value: "{{steps.generate_answer.result.content}}"
  needs:
    - generate_answer
OUTPUT_TEXT はフローの最終出力を定義します。チャットインターフェースでは、このステップの出力がユーザーに表示されます。
生成ステップを以下に置き換えます:
- id: generate_answer
  name: Generate Answer
  tool: ANTHROPIC_INVOKE
  config:
    - name: version
      value: claude-3-5-sonnet-20241022
    - name: token
      value: "{{secrets.ANTHROPIC_API_KEY}}"
  input:
    - name: prompt
      value: |
        ... (上記と同じプロンプト)
  needs:
    - search_knowledge
詳しくは Anthropic ツールリファレンスをご覧ください。
生成ステップを以下に置き換えます:
- id: generate_answer
  name: Generate Answer
  tool: GEMINI_INVOKE
  config:
    - name: version
      value: gemini-1.5-flash
    - name: token
      value: "{{secrets.GEMINI_API_KEY}}"
  input:
    - name: prompt
      value: |
        ... (上記と同じプロンプト)
  needs:
    - search_knowledge
詳しくは Gemini ツールリファレンスをご覧ください。

フローのテスト

1

フローを実行

フローエディタの右上にある 実行 ボタンをクリックします。グラフエディタでの RAG フロー
2

テスト質問を入力

プロンプトが表示されたら、アップロードしたドキュメントで回答可能な質問を入力します。テスト質問の入力ダイアログ
3

結果を確認

実行結果を確認します。回答にはナレッジベースの情報が参照されているはずです。実行結果

パート 3: チャットインターフェースとしてデプロイ

RAG フローが動作確認できました。次はユーザーがアクセスできるようにします。

Jinba App チャット

最適な用途:既製のチャット UI が必要なエンドユーザー向け

REST API

最適な用途:カスタムアプリケーションや外部連携

MCP ツール

最適な用途:AI アシスタント連携

オプション A: Jinba App チャット(推奨)

RAG フローを Jinba App のチャットコネクタとしてデプロイし、最もシンプルなエンドユーザー体験を提供します。
1

フローを公開

フローエディタで 公開 ボタンをクリックします。「このワークフローを誰がトリガーしますか?」 というダイアログが表示されます:フローを公開
オプション説明選択するタイミング
My team誰でも使えるシンプルなインターフェース✅ チャット UI パス(オプション A)にはこれを選択
Engineersコードから API 経由で呼び出すAPI パス(オプション B)にはこれを選択
Automaticスケジュールまたはイベント発生時に実行スケジュール/イベント駆動フロー向け
My team を選択し、Continue → をクリックします。トリガータイプの選択
2

Jinba Flow → Jinba App の関係を理解する

「My team」を選択すると、Jinba Flow(構築する場所)と Jinba App(チームが使用する場所)が別々の製品であることを説明する教育画面が表示されます:
  • 設計上の分離 — Jinba Flow はビルダー、Jinba App はチームが使うチャットインターフェース
  • エンタープライズグレードのセキュリティ — Jinba App は独自の認証とアクセス制御を持つ
  • チームにとってシンプル — コード不要、複雑さなし — 慣れ親しんだチャットインターフェース
Got it, continue をクリックして MCP セットアップに進みます。Flow と App の関係説明画面
3

MCP を有効化して Jinba App に接続

Create an MCP ダイアログが表示されます。フローがチャットツールとしてどのように表示されるかのプレビューが表示されます:
  • @フロー名 と説明のチャットプレビュー
  • チャット体験を試せる Demo ボタン
  • Enable MCP for this flow トグル MCP 作成ダイアログ
Enable MCP for this flow トグルを必ずオンにしてください。これが Jinba Flow と Jinba App の間の接続を作成します — 「Connect with Jinba App」ボタンは有効化後にのみ表示されます。
有効化すると、追加オプションが表示されます:
  • Workspace Token — 認証に使用
  • Connection Snippet — MCP クライアント(Claude Desktop、Cursor など)用の JSON 設定
  • Connect with Jinba App ボタン — クリックして Jinba App でコネクタを開きます
MCP を有効にすると、AI アシスタント(Claude、Cursor など)からもこのフローをツールとして呼び出せるようになります — Jinba App チャット MCP ツールアクセスの両方を1つのトグルで取得できます。
詳しくは公開をご覧ください。
4

MCP 接続設定の構成

MCP を有効にすると、MCP → Connect タブに移動します。このページにはいくつかの重要なセクションがあります:
  1. Your Token — ワークスペース認証トークン(秘密にしてください)
  2. 1-Click ConnectConnect をクリックして、このフローを Jinba App に即座にリンク
  3. Visibility — デフォルトは「Unlisted」(アクセスルールのユーザーのみ使用可能)。全ワークスペースメンバーに表示したい場合は「Listed」に変更
  4. Access Scope Settings — JWT クレームを使用してアクセス権を設定(例:メールホワイトリスト)
  5. MCP Configuration JSON Snippet — 外部 MCP クライアント(Claude Desktop、Cursor など)で使用するためにコピー MCP Connect タブ
Jinba App でフローをツールとして利用するには、1-Click Connect ボタンを必ずクリックしてください。この手順を行わないと、MCP が有効でも Jinba App にツールが表示されません。
チームメンバーのメールアドレスを Access Scope Settings に追加して、彼らもこのツールを使えるようにしましょう。+ Add Rule をクリックしてメールルールを追加できます。
5

RAG システムとチャット

Jinba App を開き、新しいチャットを開始します:
  1. 新しいチャット をクリック
  2. チャット入力の下にあるコネクタアイコン(⚙️)をクリック
  3. 「Search agents and connectors…」ドロップダウンで、ワークスペースの MCP コネクタ(例:「Tutorial Demonstrations MCP … 1 tool」)を見つける
  4. MCP コネクタをクリックして、RAG Chat Demo ツールが一覧に表示されることを確認
  5. ツールを選択 — チャット入力バーにタグとして表示されます
  6. 質問を入力して Enter を押す コネクタ選択
ツールが自動的に実行されます — 展開可能なセクションに Argumentsuser_question)と Result(RAG レスポンスのコンテンツ)が表示され、その後に AI のフォーマット済み回答が続きます。Jinba App での RAG チャット
Auto Select モードも使用できます — Jinba App が質問に基づいて適切なツールを自動的に選択するため、毎回手動でコネクタを選択する必要がありません。
詳しくは Jinba Flow コネクタをご覧ください。
このコネクタにカスタム指示を組み合わせた Jinba App エージェントを作成することもできます。

オプション B: REST API

RAG フローを API エンドポイントとして公開し、カスタムアプリケーションで利用します。
1

フローを公開

上記と同じ公開手順に従いますが、「このワークフローを誰がトリガーしますか?」ダイアログで Engineers を選択します。これにより、API アクセスに最適化されます。
2

API キーを取得

公開後、フローの設定画面から自動生成された API キーを確認します。API キーの場所
3

API を呼び出す

curl -X POST https://api.jinba.dev/api/v2/external/flows/{flow-id}/published-run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "args": [
      {"name": "user_question", "value": "返品ポリシーについて教えてください"}
    ],
    "mode": "sync"
  }'
Python の例:
import requests

response = requests.post(
    "https://api.jinba.dev/api/v2/external/flows/{flow-id}/published-run",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "args": [
            {"name": "user_question", "value": "返品ポリシーについて教えてください"}
        ],
        "mode": "sync"
    }
)
answer = response.json()
print(answer)
非同期モードやエラーハンドリングの詳細は API リファレンスをご覧ください。

オプション C: MCP ツール(AI アシスタント連携)

RAG フローを Claude Desktop などの AI アシスタントのツールとして利用可能にします。
1

MCP として公開

MCP を有効にしてフローを公開します。ワークスペース設定の MCP タブに移動します。MCP 設定
2

AI アシスタントを設定

AI アシスタントの設定に Jinba Flow MCP サーバーを追加します:
{
  "mcpServers": {
    "jinbaflow": {
      "command": "npx",
      "args": [
        "-y",
        "supergateway",
        "--streamableHttp",
        "https://api.jinba.io/api/v2/workspaces/YOUR_WORKSPACE_ID/mcp",
        "--header",
        "Authorization: Bearer YOUR_TOKEN"
      ]
    }
  }
}
詳しくは MCP ガイドをご覧ください。
3

AI アシスタントから使用

RAG フローがツールとして表示されます。AI アシスタントがナレッジベースを使って質問に回答できるようになります。

パート 4: 高度なパターン

クエリ精緻化による複数ステップ RAG

複雑な質問の場合、検索結果を改善する精緻化ステップを追加します:
- id: user_question
  name: Receive Question
  tool: INPUT_TEXT
  input:
    - name: value
      value: ""

- id: initial_search
  name: Initial Search
  tool: JINBA_VECTOR_SEARCH
  config:
    - name: token
      value: "{{secrets.JINBAFLOW_WS_API_KEY}}"
  input:
    - name: query
      value: "{{steps.user_question.result}}"
    - name: knowledgeBaseId
      value: YOUR_KB_ID_HERE
    - name: topK
      value: 10
  needs:
    - user_question

- id: refine_query
  name: Refine Query
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4o
  input:
    - name: prompt
      value: |
        初回の検索結果に基づいて、より具体的な検索クエリを生成してください。

        元の質問: {{steps.user_question.result}}

        初回の検索結果:
        {{steps.initial_search.results | dump}}

        精緻化した検索クエリのみを出力してください。
  needs:
    - initial_search

- id: refined_search
  name: Refined Search
  tool: JINBA_VECTOR_SEARCH
  config:
    - name: token
      value: "{{secrets.JINBAFLOW_WS_API_KEY}}"
  input:
    - name: query
      value: "{{steps.refine_query.result.content}}"
    - name: knowledgeBaseId
      value: YOUR_KB_ID_HERE
    - name: topK
      value: 5
    - name: threshold
      value: 0.4
  needs:
    - refine_query

- id: final_answer
  name: Generate Answer
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4o
  input:
    - name: prompt
      value: |
        精緻化された検索結果を使って、ユーザーの質問に回答してください。

        質問: {{steps.user_question.result}}

        精緻化された検索結果:
        {{steps.refined_search.results | dump}}

        ソースの引用を含む、詳細で正確な回答を提供してください。
  needs:
    - refined_search

- id: output_answer
  name: Output Answer
  tool: OUTPUT_TEXT
  input:
    - name: value
      value: "{{steps.final_answer.result.content}}"
  needs:
    - final_answer

検索結果がない場合の処理

条件付き実行を使用して、ナレッジベースに関連コンテンツがない場合を適切に処理します:
- id: check_results
  name: Check Results
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        results = {{steps.search_knowledge.result}}
        has_results = len(results.get('results', [])) > 0
        print(has_results)
    - name: data_type
      value: STRING
  needs:
    - search_knowledge

- id: generate_answer
  name: Generate Answer
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4o
  input:
    - name: prompt
      value: |
        ... コンテキスト付きの標準 RAG プロンプト ...
  needs:
    - check_results
  when: "'{{steps.check_results.result}}' == 'True'"

- id: no_results_response
  name: No Results Response
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        result = "ナレッジベースに関連する情報が見つかりませんでした。質問を言い換えるか、サポートにお問い合わせください。"
    - name: data_type
      value: STRING
  needs:
    - check_results
  when: "'{{steps.check_results.result}}' == 'False'"

ナレッジベースの自動更新

スケジュールされたフローを作成して、ナレッジベースを新しいドキュメントで自動更新します:
- id: fetch_new_docs
  name: Fetch New Docs
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        new_docs = [
            "https://example.com/updated-faq.pdf",
            "https://example.com/new-product-guide.pdf"
        ]
        result = new_docs
    - name: data_type
      value: STRING

- id: add_to_kb
  name: Add to Knowledge Base
  tool: JINBA_KNOWLEDGE_BASE_FILE_ADD
  config:
    - name: token
      value: "{{secrets.JINBAFLOW_WS_API_KEY}}"
  input:
    - name: knowledgeBaseId
      value: YOUR_KB_ID_HERE
    - name: file
      value: "{{item}}"
    - name: executionMode
      value: "SYNCHRONOUS"
    - name: chunkerSettings
      value:
        chunkSize: 512
        chunkOverlap: 128
  needs:
    - fetch_new_docs
  forEach: "{{steps.fetch_new_docs.result}}"
このフローをスケジュールして、毎日または毎週実行できます。

代替バックエンド

このチュートリアルでは Jinba ナレッジベースをメインで使用していますが、特定の要件を持つチーム向けに 2 つの追加バックエンドが利用可能です。

バックエンドの選び方

機能Jinba ナレッジベースPineconeAzure AI Search
セットアップの複雑さ⭐ 最もシンプル⭐⭐ 中程度⭐⭐⭐ 高度
外部依存なしPinecone アカウントAzure サブスクリプション
ドキュメントアップロードUI + APIAPI のみAzure ポータル / ADLS
メタデータフィルタリング✅ リッチなフィルタ構文✅ OData フィルタ
名前空間の分離✅ インデックス
リランキング✅ 内蔵モデル✅ セマンティックランカー
インデクサー / パイプライン自動手動✅ 内蔵インデクサー
コストJinba プランに含まれる別途 Pinecone 課金Azure 課金
最適な用途大半のユースケース、クイックスタート高度な検索要件エンタープライズ / Azure ネイティブ組織

代替 A: Pinecone

メタデータフィルタリング、名前空間の分離、リランキングが必要な場合は、Pinecone をベクトルバックエンドとして使用します。

Pinecone RAG マニフェスト

検索ステップを Pinecone に置き換えます:
- id: search_pinecone
  name: Search Pinecone
  tool: PINECONE_QUERY
  config:
    - name: apiKey
      value: "{{secrets.PINECONE_API_KEY}}"
  input:
    - name: indexName
      value: my-knowledge-base
    - name: query
      value: "{{steps.user_question.result}}"
    - name: topK
      value: 5
    - name: includeMetadata
      value: true
    - name: rerankModel
      value: bge-reranker-v2-m3
    - name: rerankTopN
      value: 3
  needs:
    - user_question
次に、生成ステップを Pinecone の出力フォーマットに合わせます:
- id: generate_answer
  name: Generate Answer
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4o
  input:
    - name: prompt
      value: |
        あなたは親切なアシスタントです。提供されたコンテキストに基づいて回答してください。

        ## ユーザーの質問
        {{steps.user_question.result}}

        ## 関連ドキュメント
        {{steps.search_pinecone.results | dump}}

        上記のドキュメントに基づいて正確に回答してください。
  needs:
    - search_pinecone
詳しくは Pinecone ツールリファレンスでインデックスの作成とドキュメントの upsert をご覧ください。

代替 B: Azure AI Search(エンタープライズ)

Azure エコシステムを既に利用しているエンタープライズ組織向けに、Jinba Flow は Azure AI Search を外部ナレッジベースバックエンドとしてサポートしています。高度なインデキシング、セマンティックランキング、Azure Data Lake Storage Gen2 との連携が可能です。
Azure AI Search 連携はエンタープライズ機能です。ワークスペースで有効にするには、Jinba 管理者または Jinba 営業チームにお問い合わせください。

仕組み

Azure AI Search 連携は、組み込みのナレッジベースとは異なる動作をします:
  1. ドキュメントは Azure に保存 — Azure Data Lake Storage Gen2 にアップロード
  2. インデキシングは Azure が処理 — Azure AI Search のインデクサーがドキュメントを処理・インデキシング
  3. 検索クエリは Azure を経由 — 直接または Azure API Management (APIM) 経由
  4. 結果は Jinba Flow に返される — LLM が回答を生成

セットアップ概要

1

Azure 接続の設定

ワークスペース設定で 外部ナレッジベース の設定に移動します。2 つのモードで接続できます:
モード使用するとき
APIM モードAzure API Management 経由 — 本番環境に推奨
ダイレクトモードAzure AI Search に直接接続 — 開発用にシンプル
2

Azure リソースのセットアップ

以下が必要です:
  • インデックスが設定された Azure AI Search サービス
  • ドキュメント保存用の Azure Data Lake Storage Gen2
  • API キーまたは APIM サブスクリプションキー
  • アップロードされたドキュメントを処理するインデクサーの設定
3

ドキュメントのアップロード

Jinba ワークスペース UI からドキュメントをアップロードします。ファイルは自動的に Azure Data Lake Storage に送信され、設定されたインデクサーが検索インデックスに処理します。
4

フローでの検索

検索ステップは、ワークスペースの外部ナレッジベース設定を使用します。正確なツールとパラメータはエンタープライズデプロイメントに依存します。

主要な設定項目

設定説明
エンドポイント URLAzure AI Search または APIM エンドポイント
API キー認証キー
インデックス API パスインデックス操作用のパス
検索 API パス検索クエリ用のパス
ADLS API パスファイルストレージ操作用のパス
インデクサー名ファイルアップロード後にトリガーするインデクサー
接続設定はワークスペースごとに UI で設定でき、環境変数はフォールバックとして機能します。

Azure AI Search の利点

  • セマンティックランキング: Azure 内蔵のセマンティックランカーにより、結果の関連性が向上
  • ハイブリッド検索: ベクトル検索とキーワード検索の組み合わせ
  • 内蔵インデクサー: 様々なファイル形式からコンテンツを自動抽出・インデキシング
  • エンタープライズコンプライアンス: データは Azure テナント内に保持
  • Azure エコシステム連携: Azure OpenAI などの他の Azure サービスとの連携

チューニングとベストプラクティス

チャンキング設定

ファイルを追加する際、コンテンツに合わせてチャンクパラメータを調整します:
コンテンツタイプチャンクサイズオーバーラップ理由
FAQ / 短い回答256–51264精密で焦点を絞った検索
技術ドキュメント512–1024128精密さとコンテキストのバランス
長文コンテンツ1024–2048256文脈の維持

類似度閾値ガイド

閾値動作使用するとき
0.7–1.0非常に厳密、ほぼ完全一致のみ正確な事実検索
0.4–0.7高い関連性、密接に関連大半の Q&A ユースケース
0.2–0.4中程度、周辺的な結果も含む探索的または広範な質問
0.0–0.2非常に広範、多くの結果本番環境には非推奨

プロンプトエンジニアリングのコツ

  1. グラウンディングを明示: 提供されたコンテキストのみに基づいて回答するよう LLM に指示
  2. 引用を要求: ソースファイル名の参照を LLM に要求
  3. 不確実性への対応: コンテキストが不十分な場合に「わかりません」と回答するよう指示
  4. トーンの設定: ユースケースに合わせたペルソナの指示を追加(フォーマル、カジュアル、技術的)

次のステップ

ナレッジベースドキュメント

ナレッジベース管理、チャンキング、RAG パターンの詳細

ベクトル検索リファレンス

パラメータの完全なリファレンスと高度な検索例

Pinecone リファレンス

フィルタリングとリランキング対応の外部ベクトルデータベース

API リファレンス

REST API 経由でのフロー呼び出しの完全ガイド

MCP 連携

MCP 経由で AI アシスタントにフローを接続

Jinba App エージェント

RAG フローをエージェントにラップしてチャットを強化