ai-rag プラグインは、Alibaba Cloud DashVector と Qwen を接続することで、クラウドネイティブゲートウェイに検索拡張生成 (RAG) を追加します。大規模言語モデル (LLM) のトレーニングデータのみに依存するのではなく、このプラグインはリクエスト時にベクトルデータベースから関連ドキュメントを取得してプロンプトに挿入することで、実際のデータに基づいた応答を生成します。
ゲートウェイレベルで RAG を処理することで、各アプリケーションに埋め込むのではなく、インフラストラクチャで取得ロジックを一元化できます。これにより、RAG ワークフローが簡素化され、ベクトルデータベースへのアクセスがゲートウェイに限定され、プラットフォームチームはアプリケーションコードの変更を必要とせずに構成を管理できます。
仕組み
RAG ワークフローには、データ準備 (オフライン) と取得 + 生成 (リクエストごと) の 2 つのフェーズがあります。
データ準備 (オフライン)
ソースドキュメント (PDF、記事、ナレッジベースのエントリ) からテキストを抽出します。
テキストを意味的に意味のあるチャンクに分割します。
各チャンクをベクトル埋め込みに変換し、DashVector コレクションに保存します。
取得と生成 (リクエストごと)
ユーザーがクラウドネイティブゲートウェイにクエリを送信します。
ai-ragプラグインは、クエリをベクター埋め込みに変換します。ベクトル距離のしきい値でフィルターされた、最も関連性の高い top-k ドキュメントチャンクを DashVector で検索します。
取得したチャンクをプロンプトに挿入し、強化されたプロンプトを Qwen に転送します。
Qwen は、取得したコンテキストと自身の知識の両方に基づいて応答を生成します。

実行時属性
| 属性 | 値 |
|---|---|
| 実行ステージ | default stage |
| 実行優先度 | 400 |
構成
Qwen (LLM) と DashVector (ベクトルデータベース) の 2 つのバックエンドサービスへの接続を構成します。すべてのパラメーターは必須です。
Qwen (LLM) パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
dashscope.apiKey | 文字列 | Qwen で認証するための API キー。 |
dashscope.serviceFQDN | 文字列 | ゲートウェイのサービスレジストリ内の Qwen サービスの完全修飾ドメイン名。 |
dashscope.servicePort | int | Qwen サービスのポート。 |
dashscope.serviceHost | 文字列 | Qwen にアクセスするためのドメイン名 (HTTP Host ヘッダーで使用)。 |
DashVector (ベクトルデータベース) パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
dashvector.apiKey | 文字列 | DashVector で認証するための API キー。 |
dashvector.serviceFQDN | 文字列 | ゲートウェイのサービスレジストリ内の DashVector サービスの完全修飾ドメイン名。 |
dashvector.servicePort | 整数 | DashVector サービスのポート。 |
dashvector.serviceHost | 文字列 | DashVector にアクセスするためのドメイン名 (HTTP Host ヘッダーで使用)。 |
dashvector.collection | 文字列 | 検索する DashVector コレクションの名前。 |
dashvector.topk | 整数 | ベクトル検索中に取得する上位一致ドキュメントチャンクの数。値が大きいほどより多くのコンテキストを提供しますが、レイテンシーが増加します。 |
dashvector.threshold | 浮動 | 許可される最大ベクトル距離。この値を超えるベクトル距離を持つドキュメントはフィルターされます。値が小さいほどより正確な一致を返し、値が大きいほどより広範な結果を返します。 |
dashvector.field | 文字列 | ドキュメントテキストを格納する DashVector コレクション内のフィールド名。 |
プラグインが有効で、トレーシング分析がアクティブな場合、ID を取得する ai-rag プラグインによって取得されたドキュメント ID が、各 スパン の 属性 フィールドに追加されます。これにより、特定の応答に影響を与えたドキュメントをトレースできます。
例
以下の YAML は、完全な ai-rag プラグイン構成を示しています。
dashscope:
apiKey: <your-dashscope-api-key>
serviceFQDN: dashscope
servicePort: 443
serviceHost: dashscope.aliyuncs.com
dashvector:
apiKey: <your-dashvector-api-key>
serviceFQDN: dashvector
servicePort: 443
serviceHost: <your-dashvector-endpoint>
collection: <your-collection-name>
topk: 1
threshold: 0.4
field: raw以下のプレースホルダーを実際の値に置き換えてください。
| プレースホルダー | 説明 | 例 |
|---|---|---|
<your-dashscope-api-key> | Alibaba Cloud コンソールからの DashScope API キー | sk-xxxxxxxxxxxxxxxx |
<your-dashvector-api-key> | Alibaba Cloud コンソールからの DashVector API キー | sk-xxxxxxxxxxxxxxxx |
<your-dashvector-endpoint> | ご利用の DashVector クラスターのエンドポイント | vrs-cn-xxxxxxx.dashvector.cn-hangzhou.aliyuncs.com |
<your-collection-name> | DashVector 内のターゲットコレクションの名前 | my_knowledge_base |
RAG の動作: 適用前と適用後
以下の例では、CEC-Corpus データセット —— 332件のラベル付き緊急ニュースレポートをベクトル化し、DashVector コレクションに格納したもの —— を使用します。
クエリ: 「海南での追突事故はどこで発生しましたか?理由は何ですか?死傷者は何人ですか?」
ai-rag なし -- LLM には外部コンテキストがなく、回答できません:
申し訳ありません。AI モデルとして、ニュースイベントに関する特定の情報 (場所、原因、死傷者など) をリアルタイムで取得および更新することはできません。このような特定のイベントについては、正確な情報のために最新のニュースレポートまたは公式発表をご参照ください。また、主要なメディアウェブサイトにアクセスしたり、ニュースアプリケーションを使用したり、関連政府機関の発表をフォローしたりして、最新のニュースを入手することもできます。
ai-rag では -- LLM は関連ドキュメントを取得し、根拠に基づいた応答を返します:
海南での追突事故は、海文高速道路の文昌から海口まで 37 キロメートルの地点で発生しました。事故の具体的な原因については、当時、交通警察部門がまだ調査中でした。死傷者は、死亡者 1 名 (運転手が現場で死亡)、負傷者 8 名 (子供 2 名、大人 6 名を含む) でした。負傷者は全員救助され、治療のため病院に搬送されました。
次のステップ
クラウドネイティブゲートウェイで利用可能な他の AI 関連プラグインを探索します。