2026/10/17

Domino IQ: RAG サポートの挙動確認 ②

前回は RAG を有効にした場合の動作をコンソールログと処理フェーズごとの詳細ログを使って、挙動を確認しました。今回は、RAG を使用しない場合のログを確認し、RAG の有効/無効の違いを整理します。

今回は、私が作成したライブラリ『dxlSuite』のヘルプを RAG で検索に使用しない状態にして、『dxlSuite を知っていますか?』と、前回の RAG 有効時と同じ質問します。無効の状態では、一般的な DXL の説明が、あたかも dxlSuite の機能のように返答されました。

この操作を行った際のログを確認し、RAG 有効時のログと比較してみましょう。


RAG 無効時のログ

まずは、RAG 無効時に出力されるログを確認します。

コンソールログには、以下の通り、リクエストの開始時間から返答までが、出力されていました。前回紹介した LLM の回答を生成するログと同様ですね。

[5B00:0094-3D4C] 2026/10/17 09:39:41 DominoIQ: PerformRequest() LLM Request Start time: 2026/10/17 09:39:40
2026/10/17 09:39:53.73 InvokeLLM> PerformRequest() returned (200): NotesError : , Error = , ErrorOperation =
[5B00:0094-3D4C] 2026/10/17 09:39:53 DominoIQ: PerformRequest() LLM Request End time: 2026/10/17 09:39:53
[5B00:0094-3D4C] 2026/10/17 09:39:53 DominoIQ: PerformRequest() LLM Request Duration: 12 secs
[5B00:0094-3D4C] 2026/10/17 09:39:53 DominoIQ: PerformRequest() returned Headers : HTTP/1.1 200 OK
Server: llama.cpp
Access-Control-Allow-Origin:
Content-Type: application/json; charset=utf-8
Content-Length: 2886
Keep-Alive: timeout=5, max=100
[5B00:0094-3D4C] 2026/10/17 09:39:53 DominoIQ: PerformRequest() returned Data : {"choices":[{"finish_reason":"length","index":0,"message":{"role":"assistant","content":"はい、dxlSuiteはIBM Domino(旧Lotus Notes)データベースとXML(DXL)データをやり取りするためのツールです。初心者でも理解しやすいように説明します。\n\n---\n\n### **dxlSuiteとは?**\ndxlSuiteは、**Dominoデータベース(ノートベース)**と**XML形式(DXL)**のデータを相互に


◇ 詳細ログ

RAG 無効時のリクエストでは、詳細ログとして、domiqllmthr で始まるログファイルが 1 つだけ出力されていました。コンソールログとも合致するので、RAG 無効時は DominoIQ へのリクエストは 1 回だけとなるようです。

詳細ログファイルの構成は RAG 有効時と同じです。ログの内容については、RAG 有効時との比較を通じて確認するので、ここでは割愛します。


ところで RAG 無効時のコンソールログで気になったことがあります。上記ログの直前に次のように出力されていました。

[5B00:0094-3D4C] 2026/10/17 09:39:40.77 loadDWORDItem> Unable to get value for item command_rag_max_rsp
[5B00:0094-3D4C] 2026/10/17 09:39:40.77 loadNUMBERItem> Unable to get value for item command_rag_score_threshold
[5B00:0094-3D4C] 2026/10/17 09:39:40.77 ValidateCache> Reload View. Clearing cache.
[5B00:0094-3D4C] 2026/10/17 09:39:40.79 ValidateCache> View has not changed. Using cached data.
[5B00:0094-3D4C] CacheList entry key Qwen/Qwen3-8B-GGUF
[5B00:0094-3D4C] CacheList entry key bge-m3-Q6_K
[5B00:0094-3D4C] 2026/10/17 09:39:40.79 getModel> Returning cached model bge-m3-Q6_K
[5B00:0094-3D4C] 2026/10/17 09:39:40.79 ValidateCache> View has not changed. Using cached data.
[5B00:0094-3D4C] CacheList entry key bge-m3-Q6_K
[5B00:0094-3D4C] CacheList entry key Qwen/Qwen3-8B-GGUF
[5B00:0094-3D4C] 2026/10/17 09:39:40.79 getModel> Returning cached model Qwen/Qwen3-8B-GGUF
[5B00:0094-3D4C] 2026/10/17 09:39:40.79 InvokeLLM> account URL: http://localhost:8080/v1/chat/completions
[5B00:0094-3D4C] 2026/10/17 09:39:40.79 InvokeLLM> User input paraphrasing disabled.

まず、RAG 無効時にもかかわらず、RAG に関連するメッセージやモデルの情報が出力されていました(紫字)。

DominoIQ 実行時のコマンドは "dxlSuiteHelp_NoRAG" です(下図)。ログの最初の2行は、RAG 関連の設定値を取得できなかったことを示しているようです。今回のコマンドでは、これらの項目を設定していないため、その影響かもしれません。

また、Embedding Model の名前である bge-m3-Q6_K も出力されています。RAG の有効・無効にかかわらず同じ LLM Command 文書を利用しているため、RAG に関連するモデル情報の参照処理が行われているのかもしれません。ただし、質問のベクトル化を行ったときに出力される domiqembthr・・・.log は出力されていないことからも、質問のベクトル化が実行されたとは判断できません。


また、前々回 に記載した通り、今回の評価環境ではパラフレーズを無効化しています。そのメッセージ『User input paraphrasing disabled.』も出力されていますね(青字)。


ログの比較

RAG が無効の場合、質問のベクトル化と RAG への問い合わせは不要になります。今回のログでも、これらの処理に対応する詳細ログは確認できませんでした。

一方、LLM による回答生成のログは、RAG の有効・無効にかかわらず出力されています。

処理とログの出力を整理すると、次の表のようになります。

処理 RAG 有効 RAG 無効 詳細ログファイル名
質問のベクトル化 あり なし domiqembthr・・・.log
RAG 問い合わせ あり なし domiqvecthr・・・.log
LLM 回答を生成 あり あり domiqllmthr・・・.log

ログ比較のポイントは、LLM に回答を生成させる際の詳細ログにあります。それぞれの DATA-OUT に出力されている JSON を整形して左右に並べると、違いが一目瞭然です。

今回比較したリクエストでは、system の内容やその他のパラメータは同じで、user の content に設定された内容が異なっています。

RAG 有効 RAG 無効
{
   "model": "Qwen/Qwen3-8B-GGUF",
   "messages": [
      {
         "role": "system",
         "content":
             "あなたは LotusScript と dxlSuiteの専門家です。
             初心者にも分かりやすく説明してください。
             回答は日本語で行ってください。"

      },
      {
         "role": "user",
         "content":"Use the following context
                                           to answer the user query:

         <CONTEXT>
            dxlSuite を使ってみよう
            dxlSuite for LotusScript とは?
            dxlSuite の構成と利用条件
            dxlSuite は Script 操作に対応
            既存の文書を dxlSuite でアクセスします。
            dxlSuite とは? dxlSuite for ・・・
            既存の文書を dxlSuite で更新します。
            dxlSuite と NotesDocument の連携
            dxlSuite の構成や使い方、利用条件や・・・
          </CONTEXT>

          dxlSuite を知っていますか?
          If the context does not help answer the question,
                      respond with 'I don't know.'
                      Do not make up an answer."

      }
   ],
   "max_tokens": 512,
   "temperature": 0.7
}
{
   "model": "Qwen/Qwen3-8B-GGUF",
   "messages": [
      {
         "role": "system",
         "content":
             "あなたは LotusScript と dxlSuiteの専門家です。
             初心者にも分かりやすく説明してください。
             回答は日本語で行ってください。"
      },
      {
         "role": "user",
         "content":












            "dxlSuite を知っていますか?"



       }
   ],
   "max_tokens": 512,
   "temperature": 0.7
}

最初に、DominoIQ は『Use the following context to answer the user query:』という固定の文字列を挿入しています(青字)。これは「次のコンテキストを使用して、ユーザからの質問に答えてください。」という指示となります。

続いて、RAG の検索結果が <CONTEXT> と </CONTEXT> で囲まれた範囲に列挙されています(黄字)。このように、質問への回答に利用する検索結果を、質問文とは区別して LLM に渡していることがわかります。

その後に、LotusScript から渡された質問文が続きます。

この構成により、LLM は質問文だけでなく、RAG の検索結果も参照して回答を生成するよう指示されているわけですね。


最後の 紫字 の部分は、次の2点を指示しています。

  • コンテキストが質問への回答に役立たない場合、「I don't know.」と回答
  • 回答を捏造しない

この指示は、DominoIQ が LLM へのプロンプトに付加しているものです。RAG の検索結果が回答の根拠にならない場合に、LLM が推測で回答を生成することを抑制する意図があると考えられます。


まとめ

今回は、RAG の有効/無効によって変化するログから DominoIQ の挙動を確認しました。

RAG を無効にした状態では、LLM による回答生成は行われる一方、今回のログでは質問のベクトル化や RAG への問い合わせに対応する処理は確認できませんでした。

また、LLM に送信するリクエストを比較すると、RAG 有効時には検索結果や追加の指示が user の content に含まれ、RAG 無効時には質問文だけが含まれていました。この違いから、既存の LLM による回答生成の仕組みに、RAG の検索結果を利用するための指示やコンテキストを追加していることがわかります。

今回のログを見る限り、RAG サポートは、Domino 14.5 で対応した DominoIQ の回答生成の仕組み(RAG 無効の機能)を活かしながら、RAG の検索結果や追加の指示をプロンプトに加える形で実現されているようです。既存機能を活用しながら機能を強化するという、Notes/Domino らしい実現方法だと感じました。

ところで、RAG を有効にして、ちんぷんかんぷんな質問をすると、突然 'I don't know.' と英語で回答することがあります。その動作に違和感を感じていたのですが、今回確認したログから、DominoIQ がこの指示を自動的に付加していることがわかりました。

DominoIQ を簡単に利用できるようにとの配慮だとは思うのですが、もう少し細かな制御できるようにしてほしいところですね。

”何でここだけ英語やねん!”っとツッコミを入れたくなります...


0 件のコメント:

コメントを投稿