Criando uma versão 🔗 Chain

Visualização

Este recurso está na visualização privada. Para experimentar, entre em contato com seu contato do Databricks.

Procurando um documento RAG Studio diferente? Vá para o índice de documentação RAG

Visão geral conceitual

O 🔗 Chain é o “coração” do seu aplicativo e contém o código de orquestração que une um 🔍 Retriever, modelos de IA generativos e, muitas vezes, outras APIs/serviços para transformar uma consulta do usuário (pergunta) em uma resposta (resposta) do bot. . Cada 🔗 Chain está associado a 1+ 🔍 Retrievers.

Para usar o RAG Studio, o requisito mínimo é configurar um 🔗 Chain.

Um exemplo 🔗 Chain pode aceitar uma consulta do usuário, executar o processamento da consulta, consultar um 🔍 Retriever e, em seguida, solicitar um Generative IA Models com a consulta e os resultados do recuperador para gerar uma resposta ao usuário. No entanto, a lógica 🔗 Chain pode ser arbitrariamente complexa e muitas vezes inclui os passos adicionais.

O RAG Studio é compatível com qualquer modelo MLflow registrado que tenha o esquema de solicitação/resposta a seguir. O esquema de solicitação segue o formato OpenAI ChatMessages e o esquema de resposta segue o 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
}

Observação

Na v2024-01-19, embora você possa usar qualquer modelo MLflow, para ativar a geração de registros 📝 Trace , você deve usar uma cadeia definida por LangChain dentro de seu 🔗 Chain. Versões futuras permitirão que RAG Trace Logging API seja chamado diretamente pelo seu código.

Dica

🚧 roteiro 🚧 Suporte para cadeias Llama-Index

Um 🔗 Chain consiste em:

  1. Configuração armazenada na seção chains do rag-config.yml

  2. Código armazenado em app-directory/src/build_chain.py que configura a lógica da cadeia e logs como um modelo de catálogo do Unity.

Você pode configurar modelos de IA generativos em rag-config.yml. Este modelo de incorporação pode ser qualquer pagamento portokens de APIs de modelo fundamental , taxa de transferência de provisionamento de APIs de modelo fundamental ou de modelo externo endpoint que suporte a tarefa `llm/v1/chat` .

Dica

🚧 roteiro 🚧 Suporte para múltiplos 🔗 Chain por aplicação RAG. Na v2024-01-19, apenas um 🔗 Chain pode ser criado por aplicativo RAG.

Observação

🔗 Chains devem ser implantados no modelo de operação do Databricks para permitir 📝 Trace registro e 👍 Assessments coleta.

Fluxos de dados

lenda

Instruções passo a passo

  1. Abra o rag-config.yml em seu IDE/editor de código.

  2. Edite a configuração 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. Edite src/my_rag_builder/chain.py para modificar o código default ou adicionar código personalizado.

    Se você quiser apenas modificar a lógica da cadeia default , edite o full_chain que define uma cadeia no LangChain LECL.

    Observação

    Você pode modificar esse arquivo da maneira que achar adequada, desde que, após a conclusão da execução do código, destination_model_name contenha um modelo MLflow de logs com a assinatura definida acima, registrando usando a função de conveniência fornecida chain_model_utils.log_register_chain_model().

  4. Para testar a cadeia localmente:

    1. Defina a variável de ambiente DATABRICKS_TOKEN como Personal access token.

      export DATABRICKS_TOKEN=pat_token_key
      
    2. Atualize vector_search_index_name na linha 204 para o nome de um índice Vector Search criado anteriormente com ./rag create-rag-version

    3. Descomente toda ou parte das linhas 244-264 para imprimir a saída da cadeia no console.

    4. executar o arquivo chain.py.

      python chain.py