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

RAG API

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

POST /v1/api/rag

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

POST /v1/api/rag

Headers

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

Request Example

curl -X 'POST' \
'https://beta-api.rokadoc.ntt.com/v1/api/rag' \
-H "api-key: ${ROKADOC_API_KEY}" \
-F "message=NTTドコモビジネスに社名変更したのはいつですか" \
-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=あなたは親切なアシスタントです。' \
-F 'reasoning_effort=minimal' \
-F 'highlight_display=false' \
-F "chatlog_id=${CHATLOG_ID}"

Request Body (multipart/form-data)

必須パラメータ
  • message : string(required) - RAGで検索するメッセージ
オプショナルパラメータ
  • 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、他選択肢: openai, gpt-5, gpt-5-mini、openai指定時は最も最適なものをサーバー側で選択します)
  • system_prompt : string(optional) - RAGで使用するシステムプロンプト
  • reasoning_effort : string(optional) - LLMへの推論強度ヒント(デフォルト: minimal、他選択肢: minimal, low, medium, high)
  • chatlog_id : string(optional) - 会話を継続するためのチャットログID(前回レスのchatlog_idを指定、指定しない場合は新規会話になる)
  • highlight_display : boolean(optional) - ハイライトする要素情報を返すか否か。(デフォルト: false)
  • temperature : float(optional) - LLMに渡すパラメータ。gpt4.1のようなno reasoningなモデルの場合に利用可能(デフォルト: 0)

Response

200 OK - 成功
{
"assistant_message_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"user_message_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"chatlog_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"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": "<ここに質問内容が入ります>",
"highlight_elements": [
{
"type": null,
"coordinates": [
[
0.0,
0.0
],
[
0.0,
0.0
]
],
"text": "",
"page": 1,
"reading_order": 0,
"element_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx__1__0",
"chat_message_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"conversion_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"pdf_name": "sample.pdf",
"page_width": 2484,
"page_height": 3509,
"score": 2.4173874855041504
},
{
"type": "table",
"coordinates": [
[
311.54559326171875,
2175.313232421875
],
[
2174.080322265625,
3138.05810546875
]
],
"text": "<該当elementに含まれるテキスト>",
"page": 1,
"reading_order": 4,
"element_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx__1__4",
"chat_message_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"conversion_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"pdf_name": "sample.pdf",
"page_width": 2484,
"page_height": 3509,
"score": 2.4173874855041504
}
]
}
  • assistant_message_id : string - 生成されたアシスタントメッセージのID
  • user_message_id : string - 受信したユーザーメッセージのID
  • chatlog_id : string - この会話スレッドのID(次回以降の継続に利用可能)
  • 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 - 該当elementに含まれるテキスト
        • page : integer - 要素が存在するページ番号
        • reading_order : integer - 1から始まる読み順
      • description : string - elementsが統合された全量テキスト
      • width : integer - PDFを画像化したときのページの幅
      • height : integer - PDFを画像化したときのページの高さ
    • user_id : string - ユーザーID
  • highlight_elements : array - ハイライトする要素情報の一覧
    • type : string - 要素のタイプ(title, text, table, image, null) nullの場合はページ全体を表す
    • coordinates : array - 要素の左上基準の座標情報 [[x1, y1], [x2, y2]]形式
    • text : string - 該当elementに含まれるテキスト
    • page : integer - 要素が存在するページ番号
    • reading_order : integer - 要素のページ内の読み順1から始まる読み順 0の場合はページ全体を表す
    • chat_message_id : string - チャットメッセージのID
    • assistant_message_id : string - 生成されたアシスタントメッセージのID
    • conversion_id : string - 変換ID
    • pdf_name : string - 要素が含まれるPDFのファイル名
    • page_width : integer - 要素が含まれるページを画像化したときの幅
    • page_height : integer - 要素が含まれるページを画像化したときの高さ
    • score : float - 要素が含まれるページの類似度スコア 大きいほど類似度が高い
422 Validation Error
{
"detail": [
{
"loc": ["body", "field"],
"msg": "Field required",
"type": "missing"
}
]
}

注意事項

  • search_top_kは最大5件まで指定可能です
  • LLMの回答は検索されたコンテキストに基づいて生成されます