Question answering

Semantic Retrieval API は、Google のインフラストラクチャを使用して検索拡張生成(RAG)システムを構築するためのホスト型質問応答サービスを提供します。

メソッド: models.generateAnswer

入力 GenerateAnswerRequest が指定されたモデルからグラウンディングされた回答を生成します。

エンドポイント

投稿 https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateAnswer

パスパラメータ

model string

必須。グラウンディングされたレスポンスの生成に使用する Model の名前。

形式: model=models/{model}。形式は models/{model} です。

リクエストの本文

リクエストの本文には、次の構造のデータが含まれます。

フィールド
contents[] object (Content)

必須。Model との現在の会話の内容。シングルターン クエリの場合、これは回答する単一の質問です。マルチターン クエリの場合、これは会話履歴と、質問を含むリストの最後の Content を含む繰り返しフィールドです。

注: models.generateAnswer は英語のクエリのみをサポートしています。

answerStyle enum (AnswerStyle)

必須。回答を返すスタイル。

safetySettings[] object (SafetySetting)

省略可。安全でないコンテンツをブロックするための、一意の SafetySetting インスタンスのリスト。

この条件は GenerateAnswerRequest.contentsGenerateAnswerResponse.candidate に適用されます。SafetyCategory タイプごとに設定は 1 つだけにする必要があります。API は、これらの設定で設定されたしきい値を満たさないコンテンツとレスポンスをブロックします。このリストは、safetySettings で指定された各 SafetyCategory のデフォルト設定をオーバーライドします。リストに指定された SafetyCategory に対応する SafetySetting がない場合、API はそのカテゴリのデフォルトの安全性設定を使用します。有害カテゴリ HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT、HARM_CATEGORY_HARASSMENT がサポートされています。利用可能な安全設定の詳細については、ガイドをご覧ください。AI アプリケーションに安全性の考慮事項を組み込む方法については、安全に関するガイダンスもご覧ください。

grounding_source Union type
回答の根拠となるソース。grounding_source は次のいずれかになります。
inlinePassages object (GroundingPassages)

リクエストとともにインラインで提供されるパッセージ。

semanticRetriever object (SemanticRetrieverConfig)

Semantic Retriever API を介して作成されたリソースから取得されたコンテンツ。

temperature number

省略可。出力のランダム性を制御します。

値の範囲は [0.0,1.0] です。値が 1.0 に近いほど、より多様で創造的な回答が生成されます。値が 0.0 に近いほど、モデルからより直接的な回答が返されます。通常、帰属質問応答のユースケースには低い温度(~0.2)が推奨されます。

レスポンスの本文

根拠のある回答に対するモデルからのレスポンス。

成功した場合、レスポンスの本文には次の構造のデータが含まれます。

フィールド
answer object (Candidate)

モデルからの候補の回答。

注: モデルは、与えられたパッセージから回答できる可能性が低い場合でも、常にグラウンディングされた回答を提供しようとします。その場合、質の低い回答や根拠のない回答が、低い answerableProbability とともに提供される可能性があります。

answerableProbability number

出力専用。モデルが回答の正しさと入力されたパッセージに基づく確率を推定した値。

answerableProbability が低い場合は、回答がソースに基づいていない可能性があります。

answerableProbability が低い場合は、次のことを行うことをおすすめします。

  • 「この質問にはお答えできませんでした」というメッセージをユーザーに表示します。
  • 世界中の知識から質問に回答する汎用 LLM にフォールバックします。このようなフォールバックのしきい値と性質は、個々のユースケースによって異なります。0.5 は、しきい値の開始値として適しています。
inputFeedback object (InputFeedback)

出力専用。質問に対するモデル生成の回答ではなく、質問への回答に使用された入力データに関連するフィードバック。

入力データは、次のいずれかになります。

  • GenerateAnswerRequest.content の最後のエントリで指定された質問
  • GenerateAnswerRequest.content の他のエントリで指定された会話履歴
  • グラウンディングのソース(GenerateAnswerRequest.semantic_retriever または GenerateAnswerRequest.inline_passages
JSON 表現
{
  "answer": {
    object (Candidate)
  },
  "answerableProbability": number,
  "inputFeedback": {
    object (InputFeedback)
  }
}

GroundingPassages

パッセージの繰り返しリスト。

フィールド
passages[] object (GroundingPassage)

パッセージのリスト。

JSON 表現
{
  "passages": [
    {
      object (GroundingPassage)
    }
  ]
}

GroundingPassage

グラウンディング構成とともにインラインで含まれるパッセージ。

フィールド
id string

グラウンディングされた回答でこのパッセージを帰属させるためのパッセージの識別子。

content object (Content)

パッセージの内容。

JSON 表現
{
  "id": string,
  "content": {
    object (Content)
  }
}

SemanticRetrieverConfig

Semantic Retriever API を使用して作成された Corpus または Document からグラウンディング コンテンツを取得するための構成。

フィールド
source string

必須。取得するリソースの名前。例: corpora/123corpora/123/documents/abc

query object (Content)

必須。類似性に基づいて、指定されたリソース内の Chunk を照合するために使用するクエリ。

metadataFilters[] object (MetadataFilter)

省略可。リソースから Document または Chunk を選択するためのフィルタ。

maxChunksCount integer

省略可。取得する関連する Chunk の最大数。

minimumRelevanceScore number

省略可。取得された関連する Chunk の最小関連性スコア。

JSON 表現
{
  "source": string,
  "query": {
    object (Content)
  },
  "metadataFilters": [
    {
      object (MetadataFilter)
    }
  ],
  "maxChunksCount": integer,
  "minimumRelevanceScore": number
}

AnswerStyle

グラウンディングされた回答のスタイル。

列挙型
ANSWER_STYLE_UNSPECIFIED 回答スタイルが指定されていません。
ABSTRACTIVE 簡潔で抽象的なスタイル。
EXTRACTIVE 非常に簡潔で抽出的なスタイル。
VERBOSE 詳細なスタイル。回答は、文、段落、複数の段落、箇条書きなどの形式で表示されます。

InputFeedback

質問に対するモデル生成の回答ではなく、質問への回答に使用された入力データに関連するフィードバック。

フィールド
safetyRatings[] object (SafetyRating)

入力の安全性に関する評価。カテゴリごとに 1 つのレーティングのみが許可されます。

blockReason enum (BlockReason)

省略可。設定されている場合、入力はブロックされ、候補は返されません。入力を言い換えます。

JSON 表現
{
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "blockReason": enum (BlockReason)
}

BlockReason

入力がブロックされた理由を指定します。

列挙型
BLOCK_REASON_UNSPECIFIED デフォルト値。この値は使用されません。
SAFETY 安全上の理由から入力がブロックされました。safetyRatings を調べて、どの安全性カテゴリでブロックされたかを確認します。
OTHER その他の理由で入力がブロックされました。