2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLでRAGが組めるようになったとは。しみじみ。

本日パブリックプレビューになったこちらのvector_search関数。

これによって、RAGの構成要素であるベクトルストアにSQLからアクセスできるようになりました。

もともと、SQLからLLMを呼び出す機能はai_query関数として提供されていました。

これらを組み合わせれば、RAGが作れるわけです。試してみます。

準備

ベクトルストア

こちらの手順に従って、ベクトル検索インデックスを作成しておきます。

Screenshot 2024-10-02 at 9.21.11.png

外部モデルのサービングエンドポイント

ai_query関数で呼び出すLLMのサービングエンドポイントを、こちらの手順に従って作成します。gpt-4o-miniを使います。

Screenshot 2024-10-02 at 9.22.57.png

SQLでのRAGの構築

文脈の取得

まずは、VECTOR_SEARCHでベクトル検索インデックスを検索して、文脈を構成する文字列を構築します。

SELECT
    "Databricksとは何か" || "という質問に対して" || (SELECT
      body_sub
    FROM
      VECTOR_SEARCH(
        index => "takaakiyayoi_catalog.vector_seach.taka_qiita_vs",
        query => "Databricksとは何か",
        num_results => 1
      )
    ) || "という文脈が得られています。簡潔かつ適切な回答を生成してください" AS context

動いてますね。

Screenshot 2024-10-02 at 9.25.30.png

回答の生成

得られた文脈と質問に基づいて回答を生成してみます。

SELECT
  ai_query(
    'taka-openai-o4-mini',
    "Databricksとは何か" || "という質問に対して" || (
      SELECT
        body_sub
      FROM
        VECTOR_SEARCH(
          index => "takaakiyayoi_catalog.vector_seach.taka_qiita_vs",
          query => "Databricksとは何か",
          num_results => 1
        )
    ) || "という文脈が得られています。質問と得られた文脈に基づいて簡潔かつ適切な回答を生成してください"
  ) AS response

いい感じですね。
Screenshot 2024-10-02 at 9.26.29.png

まとめ上げる

これだけでは勿体無いので、ダッシュボードに組み込みます。これで簡易のRAGチャットbotが作れるはずです。

プロンプトを洗練して、パラメーター:queryを埋め込みます。

SELECT
  ai_query(
    'taka-openai-o4-mini',
    "あなたはDatabricksの専門家です。" || :query || "という質問に対して" || (
      SELECT
        body_sub
      FROM
        VECTOR_SEARCH(
          index => "takaakiyayoi_catalog.vector_seach.taka_qiita_vs",
          query => :query,
          num_results => 1
        )
    ) || "という文脈が得られています。質問と得られた文脈に基づいて、簡潔かつ適切な回答を生成してください。文脈が得られない場合には「わからない」と回答してください。"
  ) AS response

こんな感じでダッシュボードを作成します。
Screenshot 2024-10-02 at 9.28.39.png
Screenshot 2024-10-02 at 9.28.29.png

完成です!
Screenshot 2024-10-02 at 9.29.19.png

関係のない質問には「わからない」と返すようになっています。
Screenshot 2024-10-02 at 9.30.35.png

プロトタイピングでは有用なアプローチになるのではと思いました。AWS東京リージョンでも動きますので、是非試してみてください!

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?