> ## 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.

# ナレッジ

> ナレッジベース、ベクトル検索、RAGシステムの構築方法を学ぶ

## 概要

Jinba FlowのKnowledge機能は、RAG（Retrieval-Augmented Generation）システムを構築するための強力なベクトルデータベース機能を提供します。ナレッジベースを作成し、ドキュメントをアップロードし、意味検索を実行し、AI対応の質問応答をワークフローに統合できます。

## ナレッジベースとは？

ナレッジベースは、自動チャンキングとベクトル化でドキュメントを保存するベクトルデータベースです。意味検索機能を可能にし、完全一致ではなく意味に基づいて情報を見つけることができます。

### 主な機能

* **ドキュメントストレージ**: PDF、DOCX、テキストファイル、その他の形式をアップロード
* **自動処理**: ドキュメントは自動的にチャンク化され、ベクトル化されます
* **意味検索**: 自然言語クエリを使用して関連情報を見つける
* **RAGサポート**: AI対応の質問応答システムの構築に最適
* **ベクトル埋め込み**: 高品質な埋め込みのためにOpenAIのtext-embedding-3-largeを使用

## ナレッジベースの作成

1. ワークスペースのサイドバーから**ストレージ**に移動
2. **ナレッジベース**タブをクリック
3. **ナレッジベースを作成**をクリック
4. ナレッジベースの名前と説明を入力
5. ナレッジベースが作成され、ファイルのアップロード準備が整います

## ナレッジベースへのファイル追加

### UIを使用

1. ストレージページからナレッジベースを開く
2. **ファイルをアップロード**または**ファイルを追加**をクリック
3. コンピュータからファイルを選択するか、URLを提供
4. ファイルは自動的に処理されます：
   * **パース**: ドキュメントからテキストコンテンツを抽出
   * **チャンキング**: ドキュメントを管理可能なチャンクに分割（設定可能）
   * **埋め込み**: チャンクをベクトル埋め込みに変換
   * **インデックス化**: 高速な類似検索のためにベクトルを保存

### ワークフローを使用

`JINBA_KNOWLEDGE_BASE_FILE_ADD`ツールを使用して、プログラムでナレッジベースにファイルを追加することもできます：

```yaml theme={null}
- id: add_file_to_kb
  name: add_file_to_kb
  tool: JINBA_KNOWLEDGE_BASE_FILE_ADD
  config:
    - name: token
      value: "{{secrets.JINBA_API_TOKEN}}"
  input:
    - name: knowledgeBaseId
      value: "{{secrets.KNOWLEDGE_BASE_ID}}"
    - name: file
      value: "https://example.com/document.pdf"
    - name: filename
      value: "document.pdf"
    - name: executionMode
      value: "SYNCHRONOUS"
    - name: chunkerSettings
      value:
        chunkSize: 512
        chunkOverlap: 128
        chunkingIdentifier: "\\n\\n"
```

**ファイル処理ステータス**:

* **pending**: ファイルがアップロードされ、処理待ち
* **processing**: ファイルがチャンク化およびベクトル化中
* **completed**: ファイルが検索可能
* **failed**: 処理中にエラーが発生

## ベクトル検索

ベクトル検索により、自然言語クエリを使用してナレッジベース全体で意味検索を実行できます。

### 仕組み

1. **クエリベクトル化**: 検索クエリがOpenAIのtext-embedding-3-largeを使用してベクトルに変換されます
2. **類似検索**: システムが類似したベクトルを持つチャンクを見つけます
3. **ランキング**: 結果が類似度スコアでランク付けされます
4. **フィルタリング**: 閾値以下の結果がフィルタリングされます

### ベクトル検索の使用

```yaml theme={null}
- id: search_kb
  name: search_kb
  tool: JINBA_VECTOR_SEARCH
  config:
    - name: token
      value: "{{secrets.JINBA_API_TOKEN}}"
  input:
    - name: query
      value: "認証の設定方法は？"
    - name: knowledgeBaseId
      value: "{{secrets.KNOWLEDGE_BASE_ID}}"
    - name: topK
      value: 5
    - name: threshold
      value: 0.3
```

**パラメータ**:

| パラメータ             | 型      | 必須  | デフォルト | 説明             |
| ----------------- | ------ | --- | ----- | -------------- |
| `query`           | string | はい  | -     | 自然言語検索クエリ      |
| `knowledgeBaseId` | string | はい  | -     | 検索するナレッジベースのID |
| `topK`            | number | いいえ | 3     | 返す結果の数（1-50）   |
| `threshold`       | number | いいえ | 0.3   | 類似度の閾値（0-1）    |

## RAG（Retrieval-Augmented Generation）システムの構築

RAGは、ナレッジベースからの関連情報の取得とAI生成を組み合わせて、正確でコンテキストを理解した応答を作成します。

### RAGとは？

RAG（Retrieval-Augmented Generation）は、以下の技術です：

1. **取得**: 意味検索を使用してナレッジベースから関連情報を取得
2. **拡張**: 取得したコンテキストでAIプロンプトを拡張
3. **生成**: クエリと取得したコンテキストの両方に基づいて応答を生成

このアプローチにより、AIモデルは訓練データのみに依存するのではなく、独自のドキュメントとデータを使用して質問に答えることができます。

### ステップバイステップ: RAGシステムの構築

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

1. **ストレージ** → **ナレッジベース**に移動
2. 新しいナレッジベースを作成（例：「会社のドキュメント」）
3. 後で使用するためにナレッジベースIDをメモ

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

1. ナレッジベースを開く
2. 関連するドキュメント（PDF、DOCX、テキストファイル）をアップロード
3. 処理が完了するまで待つ（ファイルは「完了」ステータスを表示）

#### ステップ3: RAGワークフローの構築

ベクトル検索とAI生成を組み合わせたワークフローを作成：

```yaml theme={null}
- id: user_question
  name: user_question
  tool: INPUT_TEXT
  input:
    - name: description
      value: "質問を入力してください"

- id: search_knowledge_base
  name: search_knowledge_base
  tool: JINBA_VECTOR_SEARCH
  config:
    - name: token
      value: "{{secrets.JINBA_API_TOKEN}}"
  input:
    - name: query
      value: "{{steps.user_question.result}}"
    - name: knowledgeBaseId
      value: "{{secrets.KNOWLEDGE_BASE_ID}}"
    - name: topK
      value: 5
    - name: threshold
      value: 0.3

- id: generate_answer
  name: generate_answer
  tool: ANTHROPIC_INVOKE
  config:
    - name: version
      value: claude-3-5-sonnet-20241022
  input:
    - name: prompt
      value: |
        ナレッジベースからの以下の情報に基づいて、ユーザーの質問に答えてください。
        
        質問: {{steps.user_question.result}}
        
        関連情報:
        {{#each steps.search_knowledge_base.result.results}}
        **出典: {{file.filename}}** (関連度: {{score}})
        {{chunk.content}}
        
        ---
        {{/each}}
        
        上記の情報に基づいて、包括的で正確な回答を提供してください。
        情報に十分な詳細が含まれていない場合は、その旨を伝えてください。
```

#### ステップ4: シークレットの設定

1. ワークスペースの**認証情報**に移動
2. **Jinba APIトークン**をシークレットとして追加
3. **ナレッジベースID**をシークレットとして保存（またはワークフローで直接使用）

### 高度なRAGパターン

#### 改良付きマルチステップRAG

```yaml theme={null}
- id: initial_search
  name: initial_search
  tool: JINBA_VECTOR_SEARCH
  config:
    - name: token
      value: "{{secrets.JINBA_API_TOKEN}}"
  input:
    - name: query
      value: "{{steps.user_question.result}}"
    - name: knowledgeBaseId
      value: "{{secrets.KNOWLEDGE_BASE_ID}}"
    - name: topK
      value: 10

- id: refine_query
  name: refine_query
  tool: ANTHROPIC_INVOKE
  config:
    - name: version
      value: claude-3-5-sonnet-20241022
  input:
    - name: prompt
      value: |
        初期検索結果に基づいて、より具体的な検索クエリを生成してください。
        
        元のクエリ: {{steps.user_question.result}}
        
        初期結果:
        {{#each steps.initial_search.result.results}}
        - {{file.filename}}: {{chunk.content}}
        {{/each}}
        
        より具体的な情報を見つけるための改良された検索クエリを生成してください。

- id: refined_search
  name: refined_search
  tool: JINBA_VECTOR_SEARCH
  config:
    - name: token
      value: "{{secrets.JINBA_API_TOKEN}}"
  input:
    - name: query
      value: "{{steps.refine_query.result.text}}"
    - name: knowledgeBaseId
      value: "{{secrets.KNOWLEDGE_BASE_ID}}"
    - name: topK
      value: 5
    - name: threshold
      value: 0.4

- id: final_answer
  name: final_answer
  tool: ANTHROPIC_INVOKE
  config:
    - name: version
      value: claude-3-5-sonnet-20241022
  input:
    - name: prompt
      value: |
        改良された検索結果を使用して、ユーザーの質問に答えてください。
        
        質問: {{steps.user_question.result}}
        
        改良された検索結果:
        {{#each steps.refined_search.result.results}}
        **{{file.filename}}** (スコア: {{score}})
        {{chunk.content}}
        {{/each}}
        
        詳細で正確な回答を提供してください。
```

## ナレッジベースファイルの管理

### ファイルの更新

`JINBA_KNOWLEDGE_BASE_UPDATE`ツールを使用して、ナレッジベース内の既存ファイルを更新できます：

```yaml theme={null}
- id: update_kb_file
  name: update_kb_file
  tool: JINBA_KNOWLEDGE_BASE_UPDATE
  config:
    - name: token
      value: "{{secrets.JINBA_API_TOKEN}}"
  input:
    - name: knowledgeBaseId
      value: "{{secrets.KNOWLEDGE_BASE_ID}}"
    - name: knowledgeBaseFileId
      value: "{{secrets.FILE_ID}}"
    - name: fileUrl
      value: "https://example.com/updated-document.pdf"
    - name: updateType
      value: "FULL_REFRESH"
    - name: executionMode
      value: "SYNCHRONOUS"
```

**更新タイプ**:

* **FULL\_REFRESH**: ファイル全体を新しいコンテンツで置き換えます
* その他の更新モードは設定によって利用可能な場合があります

## チャンキング設定

ナレッジベースにファイルを追加する際、ドキュメントのチャンキング方法を設定できます：

* **chunkSize**: 各チャンクのサイズ（トークン単位、デフォルト: 512、最大: 8192）
* **chunkOverlap**: チャンク間のオーバーラップ（トークン単位、デフォルト: 128、最大: 2048）
* **chunkingIdentifier**: チャンク境界を識別するために使用される文字列（デフォルト: "\n\n"）

**ベストプラクティス**:

* **小さなチャンク（256-512）**: 正確な情報取得に適している
* **大きなチャンク（1024-2048）**: コンテキストの維持に適している
* **オーバーラップ**: チャンク境界を越えてコンテキストを維持するのに役立つ

## RAGのベストプラクティス

1. **高品質なナレッジベース**: 高品質で関連性の高いドキュメントをアップロード
2. **適切なチャンキング**: 適切なチャンクサイズを使用（通常512-1024トークン）
3. **閾値の調整**: ユースケースに基づいて類似度の閾値を調整
4. **TopKの選択**: 包括的な回答のために十分なコンテキストを取得（通常3-10チャンク）
5. **プロンプトエンジニアリング**: 取得したコンテキストを使用するようにAIに明確に指示するプロンプトを作成
6. **出典の帰属**: 透明性と検証のために常に出典を引用
7. **エラーハンドリング**: 関連情報が見つからない場合を処理

## RAGのユースケース

* **カスタマーサポート**: 製品ドキュメントを使用して質問に回答
* **内部ナレッジ**: 会社のポリシーと手順にアクセス
* **リサーチアシスタント**: 研究論文とドキュメントを検索
* **法的文書Q\&A**: 契約と法的文書に関する質問に回答
* **技術ドキュメント**: 開発者が技術ドキュメントで情報を見つけるのを支援
* **製品情報**: 製品仕様に関する質問に回答

## 関連機能

* [ワークスペース](/ja/pages/basics/workspace) - ワークスペース管理とファイルストレージについて学ぶ
* [ベクトル検索ツール](/ja/pages/tools/jinba/vector_search) - 詳細なベクトル検索ドキュメント
* [ナレッジベースツール](/ja/pages/tools/jinba/knowledge_base) - ナレッジベース管理ツール
