Criando uma versão 🗃️ Data Processor

Visão geral conceitual

O 🗃️ Data Processor é um pipeline de dados que analisa, divide em partes e incorpora documentos não estruturados de um volume de UC de destino 📥 Data Ingestor em partes armazenadas em uma tabela Delta e sincronizadas com um índice de vetor do Unity Catalog. Um 🗃️ Data Processor está associado a 1+ 📥 Data Ingestor e pode ser associado a qualquer número de 🔍 Retrievers.

Um 🗃️ Data Processor consiste em:

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

  2. Código armazenado em app-directory/src/process_data.py

Para analisar e fragmentar documentos, você pode definir qualquer código Python personalizado, incluindo o uso de LangChain TextSplitters.

Para simplificar a experimentação com diferentes configurações, o Databricks sugere parametrizar seu 🗃️ Data Processor usando as configurações de key:value configuration em rag-config.yml. Por default, o Databricks fornece uma configuração chunk_size e chunk_overlap, mas você pode criar qualquer parâmetro personalizado.

Para incorporar documentos, configure um modelo de incorporação em rag-config.yml. Este modelo de incorporação pode ser qualquer pagamento por tokens de APIs de modelo fundamental, taxa de transferência de provisionamento de APIs de modelo fundamental ou endpoint de modelo externo que suporte a tarefa `llm/v1/embeddings` .

Os 🔍 Retrievere 🔗 Chaindownstream fazem referência à configuração do 🗃️ Data Processorpara acessar esse modelo de incorporação.

Dica

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

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 data_processors .

    data_processors:
      - name: spark-docs-processor
        description: Parse, chunk, embed Spark documentation
        # explicit link to the data ingestors that this processor uses.
        data_ingestors:
          - name: spark-docs-ingestor
        # Optional. The Unity Catalog table where the embedded, chunked docs are stored.
        # If not specified, will default to `{name}__embedded_docs__{version_number}`
        # If specified, will default to `{provided_value}__{version_number}`
        destination_table:
          name: databricks_docs_chunked
        destination_vector_index:
          databricks_vector_search:
            # Optional. The Unity Catalog table where the embedded, chunked docs are stored.
            # If not specified, will default to `{name}__embedded_docs_index__{version_number}`
            # If specified, will default to `{provided_value}__{version_number}`
            index_name: databricks_docs_index
        embedding_model:
          endpoint_name: databricks-bge-large-en
          instructions:
            embedding: ""
            query: "Represent this sentence for searching relevant passages:"
        # You can specify arbitrary key-value pairs as `configurations`
        configurations:
          chunk_size: 500
          chunk_overlap: 50
    
  3. Edite src/my_rag_builder/document_processor.py para modificar o código default ou adicionar código personalizado.

    Observação

    O senhor pode modificar esse arquivo da maneira que achar melhor, desde que, após o término da execução do código, destination_table.name contenha as seguintes colunas:

    • chunk_id - Um identificador exclusivo do bloco, normalmente um UUID.

    • doc_uri - Um identificador exclusivo do documento de origem, por exemplo, um URL.

    e esses dados são sincronizados com databricks_vector_search.index_name.

  4. O senhor pode executar o arquivo document_processor.py em um Databricks Notebook ou usando o Databricks Connect para testar o processador.