🔗 Chainバージョンの作成

プレビュー

この機能は プライベート プレビュー段階です。 お試しになるには、Databricks の担当者にお問い合わせください。

別のRAG Studioドキュメントをお探しですか?RAGドキュメントインデックスに移動

概念の概要

🔗 Chainはアプリケーションの「心臓部」であり、🔍 Retriever、ジェネレーティブAIモデル、および多くの場合、他の APIs/サービスをつなぎ合わせて、ユーザーのクエリ(質問)をボットの応答(回答)に変換するオーケストレーションコードが含まれています。 各 🔗 Chain は 1+ 🔍 Retrievers に関連付けられています。

RAG Studioを使用するための最低限の要件は、 🔗 Chainを設定することです。

たとえば、 🔗 Chain ユーザー クエリを受け入れ、クエリ処理を実行し、 🔍 Retrieverクエリを実行してから、クエリと取得結果を使用して生成 AI モデルにプロンプトを表示して、ユーザーへの応答を生成する場合があります。 ただし、 🔗 Chain ロジックは任意に複雑になる可能性があり、多くの場合、追加のステップが含まれます。

RAG Studioは、次の要求/応答スキーマを持つすべてのMLflow記録済みモデルと互換性があります。 リクエストスキーマはOpenAI ChatMessages 形式に従い、レスポンススキーマは ChatResponseに従います。

request_signature = {
    # `messages` is an Array of [ChatMessages](/machine-learning/foundation-models/api-reference.md#chatmessage)
    # To support support multi-turn conversation, your front end application can pass an array of length >1, where the array alternates between role = "user" and role = "assistant".
    # The last message in the array must be of role = "user"
    "messages": [{"role": "user", "content": "This is a question to ask?"}]
}

response_signature = {
    # `choices` is an array of ChatCompletionChoice
    # There can be 1+ choices, but each choice must have a single [ChatMessages](/machine-learning/foundation-models/api-reference.md#chatmessage) with role = "assistant"
    "choices": [{
        "index": 0,
        "message": {"role": "assistant", "content": "This is the correct answer."},
        "finish_reason": "stop"
    }],
    "object": "chat.completions"
    # TODO: add the rest of https://docs.databricks.com/en/machine-learning/foundation-models/api-reference.html#chat-task schema here
}

注:

v2024-01-19 では、任意の MLflow モデルを使用できますが、 📝 Trace ログを有効にするには、 🔗 Chain内で LangChain 定義のチェーンを使用する必要があります。 将来のバージョンでは、 RAG Trace Logging API をコードから直接呼び出せるようになります。

ヒント

🚧 ロードマップ 🚧 Llama-Index チェーンのサポート

🔗 Chainは、次のもので構成されます。

  1. の構成は、 chains セクション rag-config.yml

  2. チェーンのロジックを構成し、それをUnity Catalog Modelとして記録するコードは、 app-directory/src/build_chain.pyに保存されています。

生成AIモデルは、 rag-config.ymlで設定できます。 この埋め込みモデルは、 トークンごとの支払い 基本APIs モデル、プロビジョニングされたスループット 基本モデルAPIs 、または 「llm/v1/chat」 タスクをサポートする 外部モデル エンドポイントにすることができます。

ヒント

🚧 ロードマップ 🚧 RAGアプリケーションごとに複数の 🔗 Chain をサポートします。 v2024-01-19では、RAGアプリケーションごとに1つの 🔗 Chain しか作成できません。

注:

🔗 Chain📝 Traceログ記録と👍 Assessments収集を有効にするには、s を Databricks モデルサービングにデプロイする必要があります。

データフロー

伝説

手順

  1. IDE/コードエディタで rag-config.yml を開きます。

  2. chains 構成を編集します。

    chains:
      - name: spark-docs-chain # User specified, must be unique, no spaces
        description: Spark docs chain # User specified, any text string
        # explicit link to the retriever that this chain uses.
        # currently, only one retriever per chain is supported, but this schema allows support for adding multiple in the future
        retrievers:
          - name: ann-retriever
        foundational_models:
          - name: llama-2-70b-chat # user specified name to reference this model in the chain & to override per environment. Must be unique.
            type: v1/llm/chat
            endpoint_name: databricks-llama-2-70b-chat
            prompt_template:
              chat_messages:
                - role: "system"
                  content: "You are a trustful assistant for Databricks users. You are answering python, coding, SQL, data engineering, spark, data science, AI, ML, Datawarehouse, platform, API or infrastructure, Cloud administration question related to Databricks. If you do not know the answer to a question, you truthfully say you do not know. Read the discussion to get the context of the previous conversation. In the chat discussion, you are referred to as 'system'. The user is referred to as 'user'."
                - role: "user"
                  content: "Discussion: {chat_history}. Here's some context which might or might not help you answer: {context} Answer straight, do not repeat the question, do not start with something like: the answer to the question, do not add 'AI' in front of your answer, do not say: here is the answer, do not mention the context or the question. Based on this history and context, answer this question: {question}"
            configurations:
              temperature: 0.9
              max_tokens: 200
    
  3. src/my_rag_builder/chain.pyを編集して、デフォルトのコードを変更するか、カスタムコードを追加します。

    デフォルトのチェーンロジックを変更するだけの場合は、LangChain LECLでチェーンを定義する full_chain を編集します。

    注:

    このファイルは、コードの実行が完了した後 destination_model_name 、上記で定義したシグネチャを持つログに記録された MLflow モデルが含まれ、提供されている便利な関数 chain_model_utils.log_register_chain_model()を使用してログに記録されている限り、適切と思われる任意の方法で変更できます。

  4. チェーンをローカルでテストするには、次のようにします。

    1. DATABRICKS_TOKEN環境変数をPersonal ACCESSに設定します。

      export DATABRICKS_TOKEN=pat_token_key
      
    2. 204 行目のvector_search_index_nameを、以前に作成した Vector Search インデックスの名前に更新します。 ./rag create-rag-version

    3. 244 行目から 264 行目の全部または一部のコメントを解除して、チェーン出力をコンソールに出力します。

    4. chain.pyファイルを実行します。

      python chain.py