paint-brush
Elevando LLMs empresariais com geração aumentada de recuperação (RAG) e integração de banco de dados vetorialpor@vpenikal
4,045 leituras
4,045 leituras

Elevando LLMs empresariais com geração aumentada de recuperação (RAG) e integração de banco de dados vetorial

Muito longo; Para ler

Este blog explora a integração da Geração Aumentada de Recuperação (RAG) com bancos de dados vetoriais, particularmente Milvus, para aprimorar Modelos de Aprendizagem de Línguas (LLMs) em aplicações empresariais. Abrange os desafios dos LLMs, apresenta bancos de dados RAG e vetoriais e fornece exemplos práticos e tutoriais. O blog detalha a configuração de um ambiente local para RAG e Milvus, incluindo instalação e configuração, e conclui com o potencial significativo de combinar essas tecnologias para melhorar as respostas orientadas por IA e a compreensão contextual em aplicações empresariais de IA.
featured image - Elevando LLMs empresariais com geração aumentada de recuperação (RAG) e integração de banco de dados vetorial
Venkata Karthik Penikalapati HackerNoon profile picture


Aprimorando aplicativos LLM com tecnologias sensíveis ao contexto

As aplicações de Grandes Modelos de Linguagem têm sido transformadoras em vários setores, moldando uma nova fronteira no processamento e compreensão da linguagem natural. Os LLMs, conhecidos por gerar textos semelhantes aos humanos, revolucionaram os chatbots, a criação de conteúdo e até mesmo tarefas complexas de resolução de problemas.


No entanto, apesar das suas capacidades impressionantes, os LLMs enfrentam desafios notáveis, particularmente na consciência do contexto e na manutenção da precisão ao longo de interações prolongadas. Uma armadilha comum é a sua tendência para “ alucinações ”, onde o conteúdo gerado, embora fluente, pode tornar-se impreciso ou irrelevante.


É aqui que tecnologias como Geração Aumentada de Recuperação (RAG) e bancos de dados vetoriais se tornam fundamentais. Ao integrar LLMs com RAG, que recupera dinamicamente informações relevantes de vastos conjuntos de dados, podemos mitigar significativamente essas limitações. A sinergia entre LLMs e bancos de dados vetoriais, capazes de manipular e recuperar com eficiência dados vetoriais estruturados, promete trazer um novo nível de profundidade, contexto e confiabilidade às aplicações LLM.


Neste blog, os leitores podem esperar:


  • Insights abrangentes sobre os desafios do LLM : Compreender as limitações dos LLMs, como consciência do contexto e problemas de precisão.
  • Introdução aos bancos de dados RAG e vetoriais : explorando como essas técnicas abordam as desvantagens dos LLMs tradicionais.
  • Demonstrações práticas e tutoriais : exemplos práticos que mostram a integração do RAG com bancos de dados vetoriais para aprimorar aplicações LLM.
  • Aplicações do mundo real : explorando como essas integrações podem ser aplicadas de forma eficaz em ambientes empresariais.
  • Conhecimento prático para vários públicos : seja você um entusiasta de tecnologia, um profissional de IA ou um profissional de negócios, o blog tem como objetivo fornecer informações valiosas e conhecimento prático.



Compreendendo a geração aumentada de recuperação (RAG)

A Geração Aumentada de Recuperação (RAG) é um paradigma inovador no campo de IA e processamento de linguagem natural. Ele marca uma mudança significativa em relação aos modelos de linguagem convencionais, integrando a recuperação de informações no processo de geração de linguagem. Esta abordagem híbrida aumenta a capacidade dos modelos de IA de gerar respostas que não são apenas contextualmente precisas, mas também infundidas com conhecimento atualizado de fontes de dados externas.


O início do RAG remonta à busca por superar as limitações dos modelos de linguagem padrão, como o GPT (Generative Pre-trained Transformer). Os modelos tradicionais, apesar da sua proficiência na geração de texto coerente, muitas vezes têm dificuldade em fornecer respostas precisas e baseadas em factos, especialmente para consultas que requerem conhecimento específico e em tempo real.




Fluxo RAG




Aqui está uma descrição de como funciona a Geração Aumentada de Recuperação (RAG), integrando-se a um banco de dados vetorial:


  1. Ingestão e indexação : o fluxo de trabalho começa com uma base de conhecimento abrangente, que é a base da inteligência do sistema. Esta Base de Conhecimento é normalmente um grande corpus de documentos contendo informações que podem ser consultadas pelos usuários. Esses documentos podem ser qualquer coisa, desde planilhas e artigos de perguntas frequentes até bancos de dados de informações estruturadas. Antes que esses documentos possam ser utilizados, eles passam por um processo de ingestão onde são pré-processados e transformados em embeddings. Um modelo de incorporação – geralmente um algoritmo sofisticado de aprendizado de máquina – é empregado para converter as informações textuais em incorporações vetoriais. Essas incorporações representam numericamente o conteúdo semântico dos documentos em um espaço multidimensional, o que é ideal para comparações de similaridade.


  2. Interação com o cliente : tudo começa com um cliente interagindo com um aplicativo e fazendo uma consulta. Esta consulta é um pedido de informação ou uma pergunta que o cliente espera que a IA responda.


  3. Incorporação de consulta : a consulta bruta do cliente é então processada por um modelo de incorporação. Este modelo converte a consulta de texto em um vetor, que é uma representação numérica que captura o significado semântico da consulta em um espaço de alta dimensão.


  4. Pesquisa de banco de dados vetorial : o vetor de consulta é enviado para um banco de dados vetorial, um banco de dados especializado projetado para lidar com dados vetoriais de alta dimensão. O banco de dados realiza uma pesquisa de similaridade para recuperar os embeddings de documentos mais relevantes. Essas incorporações representam conhecimento pré-processado de uma Base de Conhecimento que foi ingerida no sistema.


  5. Recuperação de contexto : os embeddings de documentos recuperados são combinados com a consulta original para formar um prompt que inclui a consulta e o contexto relevante.


  6. Geração de resposta do modelo de linguagem : esse prompt enriquecido é então alimentado em um modelo de aprendizagem de linguagem (LLM). O LLM utiliza o contexto dos documentos recuperados para gerar uma resposta precisa, informativa e contextualmente relevante para a consulta do cliente.


  7. Resposta Generativa : Finalmente, o LLM produz uma resposta generativa, que é devolvida ao cliente por meio do aplicativo. Esta resposta não se baseia apenas no conhecimento pré-treinado do modelo, mas também é aumentada com informações específicas recuperadas da base de conhecimento, tornando-a altamente relevante para a solicitação do usuário.

Bancos de dados vetoriais

Os bancos de dados vetoriais armazenam e gerenciam dados que foram convertidos em formato vetorial numérico, geralmente por meio de processos como a incorporação de modelos em aprendizado de máquina. Incorporações são representações numéricas de dados, geralmente vetores de alta dimensão, que capturam as características semânticas ou contextuais da entrada original. No caso de dados de texto, os embeddings convertem palavras, frases ou documentos inteiros em um formato que um computador pode processar. Modelos de aprendizado de máquina, particularmente redes neurais, são usados para gerar esses embeddings para que significados semelhantes sejam próximos no espaço vetorial. Esses bancos de dados são projetados para realizar pesquisas de similaridade com eficiência, que localizam pontos de dados mais próximos de um determinado vetor de consulta dentro do espaço vetorial.



fonte - https://www.sbert.net/examples/applications/semantic-search/README.html



Aqui está uma visão mais aprofundada do processo:


  1. Armazenamento de dados : quando os documentos são ingeridos, um modelo de incorporação (como uma rede neural) transforma o texto em um vetor de alta dimensão. Cada vetor representa o significado semântico do documento em forma numérica. Esses vetores são então armazenados no banco de dados de vetores.


  2. Indexação : Para facilitar a recuperação rápida, o banco de dados constrói um índice sobre esses vetores usando algoritmos adequados para espaços de alta dimensão, como Índice de Arquivo Invertido (IVF) ou Mundo Pequeno Navegável Hierárquico (HNSW). A escolha do tipo de índice equilibra a velocidade e a precisão da pesquisa.


  3. Pesquisa de similaridade : quando uma consulta é feita, ela também é convertida em um vetor usando o mesmo modelo de incorporação. O banco de dados vetorial usa então o índice para encontrar rapidamente os vetores mais semelhantes ao vetor de consulta. A similaridade é determinada por métricas de distância, como distância euclidiana ou similaridade de cosseno.


Vantagens das incorporações :


  1. Semântica Semântica : Os embeddings são projetados para que itens semanticamente semelhantes estejam mais próximos no espaço vetorial, permitindo que os sistemas entendam o contexto e o significado. Por exemplo, no campo da genómica, os dados de expressão genética podem ser codificados como incorporações para revelar padrões que indicam relações entre diferentes genes e fenótipos. Isto pode ajudar na identificação de biomarcadores para doenças que podem não ser aparentes através da análise tradicional.


  2. Relacionamentos Complexos : Eles podem capturar relacionamentos complexos e nuances nos dados que podem ser perdidas nas representações tradicionais. Uma aplicação prática é vista em sistemas de recomendação, como aqueles usados por serviços de streaming como Netflix ou Spotify. Essas plataformas usam incorporações para entender as preferências do usuário e os recursos de conteúdo, recomendando assim filmes ou músicas que compartilham semelhanças com as escolhas anteriores do usuário. Apesar da diversidade de conteúdo, os embeddings permitem recomendações diferenciadas que vão além do gênero ou artista, considerando padrões mais profundos de consumo do usuário.


  3. Uniformidade : os embeddings convertem vários tipos de dados em um formato vetorial uniforme, simplificando operações como comparação e recuperação.


Introdução ao banco de dados vetorial

A criação de um ambiente de desenvolvimento local para RAG e Vector DB ( Milvus ) envolve várias etapas importantes.


Aqui está um guia estruturado:


  1. Pré-requisitos :

    • Certifique-se de que o Python 3.6+ esteja instalado em seu sistema.

    • Docker é necessário para executar o Milvus.


  2. Ambiente Virtual :

    • Crie um novo ambiente virtual e use-o:

       python3 -m venv rag-milvus-env source rag-milvus-env/bin/activate # Install supporting dependencies pip install transformers datasets faiss-cpu torch sentence-transformers pymilvus


  3. Milvus usando docker :

  • Extraia e execute a imagem Milvus Docker: (você também pode usar outros bancos de dados vetoriais)

  • Você pode usar as etapas abaixo ou seguir o guia de primeiros passos fornecido aqui .


     docker pull milvusdb/milvus:latest docker run -d --name milvus_cpu -p 19530:19530 -p 19121:19121 milvusdb/milvus:latest


  • Dados de configuração :

    Agora vamos tentar baixar alguns dados de amostra, criar embeddings e inseri-los em uma coleção.

     import requests import csv url = "http://qim.fs.quoracdn.net/quora_duplicate_questions.tsv" # Download the file response = requests.get(url) response.raise_for_status() # This will raise an error if the download failed # Decode the content and split into lines lines = response.content.decode('utf-8').splitlines() questions = [] # Process the lines reader = csv.reader(lines, delimiter='\t') next(reader) # Skip the header row for row in reader: questions.extend([row[1], row[4]]) # Assuming the questions are in the 2nd and 3rd columns questions = questions[:10000]


  • Criar incorporações

     from sentence_transformers import SentenceTransformer # transformer to create embeddings model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(questions)


  • Insira no vetor DB.

     # connect to db connections.connect() embedding_size = 384 # Prepare the collection schema fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=embedding_size) ] schema = CollectionSchema(fields, "questions") collection = Collection("questions", schema) # Insert the document embeddings mr = collection.insert([embeddings]) # to get document, in practice this would be some external DB. id_to_question = {str(mr.primary_keys[i]): questions[i] for i in range(len(questions))} # List all collections collections = list_collections() print(collections)


  • Indexe a coleção.

     from pymilvus import Collection index_params = { "metric_type": "L2", "index_type": "HNSW", # Index of type HNSW, refer to docs for other types. "params": { "M": 16, # Example value, adjust as needed "efConstruction": 200 } } collection = Collection("questions") collection.create_index( field_name="embedding", index_params=index_params )


  • Consultar documentos

     query = "What is artificial intelligence?" query_embedding = model.encode(query) collection.load() # Define search parameters search_params = {"metric_type": "L2", "params": {"nprobe": 10}} # Perform the search results = collection.search( data=[query_vector], anns_field="embedding", param=search_params, limit=10, expr=None, consistency_level="Strong" ) # Process results for result in results: milvus_id = str(result.id) # Convert ID to string for dictionary lookup original_question = id_to_question[milvus_id] print(f"Milvus ID: {milvus_id}, Similar Question: {original_question}")


Assim que obtivermos documentos semanticamente semelhantes do banco de dados vetorial, poderíamos passar esse contexto + consulta de entrada para LLMs, que terão resultados muito melhores, pois os LLMs têm contexto agora.


Conclusão

Concluindo, a integração do RAG com bancos de dados vetoriais como Milvus oferece uma solução potente para alguns dos desafios mais urgentes em aplicações LLM – particularmente aquelas que exigem compreensão contextual profunda e recuperação dinâmica de informações. Ao combinar a capacidade generativa dos LLMs com a precisão e eficiência dos bancos de dados vetoriais, as empresas podem melhorar enormemente a relevância e a precisão das respostas orientadas pela IA, proporcionando aos usuários interações valiosas e contextualmente ricas.


À medida que a IA continua a avançar, a fusão destas tecnologias representa não apenas um passo, mas um salto em frente, anunciando um futuro onde a IA pode suportar aplicações mais sofisticadas, variadas e diferenciadas em todos os setores. Este blog preparou o terreno para inovadores e profissionais começarem a experimentar essas ferramentas, ampliando os limites do que é possível no domínio dos aplicativos empresariais de IA.