メインコンテンツまでスキップ

RAG API

概要: インデックスを選択してRAG(Retrieval-Augmented Generation)を利用するAPIです。検索結果と共にLLMによる回答を取得できます。

POST /v1/api/rag

インデックス化されたドキュメントを検索し、LLMを使用して質問に対する回答を生成します。

messageパラメータはbase64エンコードされている必要があります。

POST /v1/api/rag

Headers

  • api-key : string(required) - rokadoc APIキー

Request Example

# メッセージをbase64エンコード
MESSAGE=$(echo '[{"content":"NTTドコモビジネスに社名変更したのはいつですか"}]' | base64 -w 0)

curl -X 'POST' \
'https://beta-api.rokadoc.ntt.com/v1/api/rag' \
-H "api-key: ${ROKADOC_API_KEY}" \
-F "message=${MESSAGE}" \
-F "tags_filter=${TAG}" \
-F 'search_top_k=3' \
-F 'tags_filter_include=true' \
-F "space_id=${SPACE_ID}" \
-F 'use_llm=openai' \
-F 'system_prompt=あなたは親切なアシスタントです。'

Request Body (multipart/form-data)

必須パラメータ
  • message : string(required) - RAGで検索するメッセージ(base64エンコード済み)
オプショナルパラメータ
  • tags_filter : array(optional) - 検索で絞り込むタグ名 (デフォルト: [])
  • search_top_k : integer(optional) - 検索するchunk数。最大5件まで指定可能 (デフォルト: 3)
  • tags_filter_include : boolean(optional) - 指定したタグが含まれるものを返却するか否か。falseでタグが含まれないものが返却される (デフォルト: true)
  • space_id : string(optional) - スペース機能を利用する場合はIDを入力
  • use_llm : string(optional) - RAGで使用するLLM (デフォルト: openai、現在は固定)
  • system_prompt : string(optional) - RAGで使用するシステムプロンプト

Response

200 OK - 成功
{
"search_result": [
{
"context": "<チャンク化されたテキスト>",
"unit": {
"unit": 1,
"title": "",
"body": "",
"elements": [
{
"type": "title",
"coordinates": [[305.0,254.0],[802.0,343.0]],
"text": "<ここにタイトルが入ります>",
"page": 1,
"reading_order": 1
}],
"description": "<elementsが統合されたチャンク化される前の全量テキスト>",
"width": 2481,
"height": 3508
},
"pdf_name": "sample.pdf",
"page_number": 1,
"roka_algorithm": null,
"conversion_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"user_id": "xxxxxxxxxxxx",
"tags": []
}
],
"chat_response": "<ここにAIの回答が入ります>",
"chat_request": "<ここに質問内容が入ります>",
}
  • chat_request : string - 送信された質問内容
  • chat_response : string - LLMによる回答
  • search_result : array - 検索結果のドキュメント一覧
    • context : string - 検索されたコンテキスト
    • conversion_id : string - 変換ID
    • page_number : integer - ページ番号
    • pdf_name : string - ファイル名
    • roka_algorithm : string|null - 使用されたアルゴリズム
    • tags : array - 関連タグ
    • unit : object - ドキュメントのユニット情報
      • unit : integer - ユニット番号
      • title : string - elementsに集約したため、現在不使用
      • body : string - elementsに集約したため、現在不使用
      • elements : array - ドキュメントに含まれるレイアウト情報
        • type : string - 要素のタイプ(title, text, table, image)
        • coordinates : array - 要素の左上基準の座標情報 [[x1, y1], [x2, y2]]形式
        • text : string - 抽出したテキスト
        • page : integer - 要素が存在するページ番号
        • reading_order : integer - 1から始まる読み順
      • description : string - elementsが統合された全量テキスト
      • width : integer - PDFを画像化したときのページの幅
      • height : integer - PDFを画像化したときのページの高さ
    • user_id : string - ユーザーID
422 Validation Error
{
"detail": [
{
"loc": ["body", "field"],
"msg": "Field required",
"type": "missing"
}
]
}

注意事項

  • messageパラメータは必ずbase64エンコードしてください
  • search_top_kは最大5件まで指定可能です
  • LLMの回答は検索されたコンテキストに基づいて生成されます