toco LlamaIndex: Aumente seus aplicativos LLM com dados personalizados facilmente - Unite.AI
Entre em contato

Inteligência artificial

LlamaIndex: Aumente seus aplicativos LLM com dados personalizados facilmente

mm
Atualização do on
LhamaIndex

Grandes modelos de linguagem (LLMs), como a série GPT da OpenAI, foram treinados em uma ampla gama de dados acessíveis ao público, demonstrando capacidades notáveis ​​na geração de texto, resumo, resposta a perguntas e planejamento. Apesar da sua versatilidade, uma questão frequentemente colocada gira em torno da integração perfeita destes modelos com dados personalizados, privados ou proprietários.

Empresas e indivíduos são inundados com dados exclusivos e personalizados, muitas vezes armazenados em vários aplicativos, como Notion, Slack e Salesforce, ou armazenados em arquivos pessoais. Para aproveitar os LLMs para estes dados específicos, diversas metodologias foram propostas e experimentadas.

Afinação representa uma dessas abordagens, consiste no ajuste dos pesos do modelo para incorporar o conhecimento de conjuntos de dados específicos. No entanto, este processo não está isento de desafios. Exige um esforço substancial na preparação de dados, juntamente com um procedimento de otimização difícil, necessitando de um certo nível de experiência em aprendizado de máquina. Além disso, as implicações financeiras podem ser significativas, especialmente quando se trata de grandes conjuntos de dados.

A aprendizagem contextual surgiu como uma alternativa, priorizando a elaboração de insumos e instruções para fornecer ao LLM o contexto necessário para gerar resultados precisos. Esta abordagem mitiga a necessidade de uma extensa reciclagem do modelo, oferecendo um meio mais eficiente e acessível de integração de dados privados.

Mas a desvantagem disso é a dependência da habilidade e experiência do usuário em engenharia imediata. Além disso, a aprendizagem contextual pode nem sempre ser tão precisa ou confiável quanto o ajuste fino, especialmente quando se trata de dados altamente especializados ou técnicos. A pré-formação do modelo numa vasta gama de textos da Internet não garante a compreensão de jargões ou contextos específicos, o que pode levar a resultados imprecisos ou irrelevantes. Isto é particularmente problemático quando os dados privados provêm de um domínio ou indústria de nicho.

Além disso, a quantidade de contexto que pode ser fornecida num único prompt é limitada e o desempenho do LLM pode degradar-se à medida que a complexidade da tarefa aumenta. Há também o desafio da privacidade e da segurança dos dados, uma vez que as informações fornecidas na solicitação podem ser potencialmente sensíveis ou confidenciais.

À medida que a comunidade explora essas técnicas, ferramentas como LhamaIndex agora estão ganhando atenção.

Índice de lhama

Índice de lhama

Foi iniciado por Jerry Liu, um ex-cientista pesquisador do Uber. Ao experimentar o GPT-3 no outono passado, Liu percebeu as limitações do modelo no que diz respeito ao tratamento de dados privados, como arquivos pessoais. Esta observação levou ao início do projeto de código aberto LlamaIndex.

A iniciativa atraiu investidores, garantindo $ 8.5 milhões em uma recente rodada de financiamento inicial.

LlamaIndex facilita o aumento de LLMs com dados personalizados, preenchendo a lacuna entre modelos pré-treinados e casos de uso de dados personalizados. Por meio do LlamaIndex, os usuários podem aproveitar seus próprios dados com LLMs, desbloqueando a geração de conhecimento e o raciocínio com insights personalizados.

Os usuários podem fornecer seus próprios dados aos LLMs, promovendo um ambiente onde a geração de conhecimento e o raciocínio são profundamente personalizados e perspicazes. O LlamaIndex aborda as limitações da aprendizagem contextual, fornecendo uma plataforma mais fácil de usar e segura para interação de dados, garantindo que mesmo aqueles com experiência limitada em aprendizagem de máquina possam aproveitar todo o potencial dos LLMs com seus dados privados.

Conceitos de alto nível e alguns insights

1. Geração Aumentada de Recuperação (RAG):

LhamaIndex RAG

LhamaIndex RAG

O RAG é um processo duplo projetado para acoplar LLMs a dados personalizados, aumentando assim a capacidade do modelo de fornecer respostas mais precisas e informadas. O processo compreende:

  • Estágio de Indexação: Esta é a fase preparatória onde são lançadas as bases para a criação da base de conhecimento.
ÍNDICES LlamaIndex

Indexação LlamaIndex

  • Estágio de consulta: Aqui, a base de conhecimento é vasculhada em busca de contexto relevante para ajudar os LLMs a responder perguntas.
ESTÁGIO DE CONSULTA LlamaIndex

Estágio de consulta LlamaIndex

Jornada de indexação com LlamaIndex:

  • Conectores de dados: Pense nos conectores de dados como o passaporte dos seus dados para o LlamaIndex. Eles ajudam na importação de dados de diversas fontes e formatos, encapsulando-os em uma representação simplista de 'Documento'. Os conectores de dados podem ser encontrados no LlamaHub, um repositório de código aberto repleto de carregadores de dados. Esses carregadores são criados para fácil integração, permitindo uma experiência plug-and-play com qualquer aplicativo LlamaIndex.
Centro de lhama

Hub LlamaIndex (https://llamahub.ai/)

  • Documentos / Nós: um documento é como uma mala genérica que pode conter diversos tipos de dados – seja um PDF, uma saída de API ou entradas de banco de dados. Por outro lado, um Node é um trecho ou “pedaço” de um Documento, enriquecido com metadados e relacionamentos com outros nós, garantindo uma base robusta para recuperação precisa de dados posteriormente.
  • Índices de dados: Após a ingestão de dados, o LlamaIndex auxilia na indexação desses dados em um formato recuperável. Nos bastidores, ele disseca documentos brutos em representações intermediárias, calcula incorporações vetoriais e deduz metadados. Entre os índices, 'VectorStoreIndex' costuma ser a escolha certa.

Tipos de índices no LlamaIndex: chave para dados organizados

LlamaIndex oferece diferentes tipos de índice, cada um para diferentes necessidades e casos de uso. No centro desses índices estão os “nós”, conforme discutido acima. Vamos tentar entender os índices LlamaIndex com sua mecânica e aplicações.

1. Índice da lista:

  • Mecanismo: um índice de lista alinha nós sequencialmente como uma lista. Após a divisão dos dados de entrada em nós, eles são organizados de forma linear, prontos para serem consultados sequencialmente ou por meio de palavras-chave ou incorporações.
  • Advantage: esse tipo de índice brilha quando há necessidade de consulta sequencial. LlamaIndex garante a utilização de todos os seus dados de entrada, mesmo que ultrapassem o limite de token do LLM, consultando de forma inteligente o texto de cada nó e refinando as respostas à medida que navega pela lista.

2. Índice de armazenamento de vetores:

  • Mecanismo: aqui, os nós se transformam em embeddings de vetores, armazenados localmente ou em um banco de dados de vetores especializado como Milvus. Quando consultado, ele busca os top_k nós mais semelhantes, canalizando-os para o sintetizador de resposta.
  • Advantage: se o seu fluxo de trabalho depende da comparação de texto para similaridade semântica por meio de pesquisa vetorial, esse índice pode ser usado.

3. Índice de árvore:

  • Mecanismo: em um índice de árvore, os dados de entrada evoluem para uma estrutura de árvore, construída de baixo para cima a partir de nós folha (os blocos de dados originais). Os nós pais surgem como resumos de nós folha, criados usando GPT. Durante uma consulta, o índice da árvore pode percorrer do nó raiz até os nós folha ou construir respostas diretamente dos nós folha selecionados.
  • Advantage: com um índice de árvore, a consulta de longos blocos de texto torna-se mais eficiente e a extração de informações de vários segmentos de texto é simplificada.

4. Índice de Palavras-Chave:

  • Mecanismo: um mapa de palavras-chave para nós forma o núcleo de um índice de palavras-chave. Quando consultado, as palavras-chave são extraídas da consulta e apenas os nós mapeados são destacados.
  • Advantage: quando você tem consultas de usuário claras, um índice de palavras-chave pode ser usado. Por exemplo, examinar documentos de saúde torna-se mais eficiente quando se concentra apenas nos documentos pertinentes à COVID-19.

Instalando o LlamaIndex

Instalar o LlamaIndex é um processo simples. Você pode optar por instalá-lo diretamente do Pip ou da fonte. (Certifique-se de ter o python instalado em seu sistema ou você pode usar o Google Colab)

1. Instalação do Pip:

  • Execute o seguinte comando:
    pip install llama-index
  • Note: Durante a instalação, o LlamaIndex pode baixar e armazenar arquivos locais para determinados pacotes como NLTK e HuggingFace. Para especificar um diretório para esses arquivos, use a variável de ambiente “LLAMA_INDEX_CACHE_DIR”.

2. Instalação da fonte:

  • Primeiro, clone o repositório LlamaIndex do GitHub:
    git clone https://github.com/jerryjliu/llama_index.git
  • Depois de clonado, navegue até o diretório do projeto.
  • Você precisará do Poetry para gerenciar dependências de pacotes.
  • Agora, crie um ambiente virtual usando Poetry:
    poetry shell
  • Por último, instale os requisitos do pacote principal com:
    poetry install

Configurando seu ambiente para LlamaIndex

1. Configuração OpenAI:

  • Por padrão, o LlamaIndex utiliza OpenAI's gpt-3.5-turbo para geração de texto e text-embedding-ada-002 para recuperação e incorporação.
  • Para usar esta configuração, você precisará ter um OPENAI_API_KEY. Obtenha um registrando-se no site da OpenAI e criando um novo token de API.
  • Você tem a flexibilidade de personalizar o Large Language Model (LLM) subjacente de acordo com as necessidades do seu projeto. Dependendo do seu provedor LLM, você pode precisar de chaves e tokens de ambiente adicionais.

2. Configuração do ambiente local:

  • Se você preferir não usar OpenAI, o LlamaIndex muda automaticamente para modelos locais – LlamaCPP e llama2-chat-13B para geração de texto e BAAI/bge-small-en para recuperação e incorporação.
  • Para utilizar o LlamaCPP, siga o guia de instalação fornecido. Certifique-se de instalar o llama-cpp-python pacote, idealmente compilado para suportar sua GPU. Esta configuração utilizará cerca de 11.5 GB de memória na CPU e GPU.
  • Para incorporações locais, execute pip install sentence-transformers. Esta configuração local usará cerca de 500 MB de memória.

Com essas configurações, você pode personalizar seu ambiente para aproveitar o poder do OpenAI ou executar modelos localmente, alinhando-se aos requisitos e recursos do seu projeto.

Um caso de uso simples: consultando páginas da Web com LlamaIndex e OpenAI

Aqui está um script Python simples para demonstrar como você pode consultar uma página da web para obter insights específicos:

!pip install llama-index html2text
import os
from llama_index import VectorStoreIndex, SimpleWebPageReader
# Enter your OpenAI key below:
os.environ["OPENAI_API_KEY"] = ""
# URL you want to load into your vector store here:
url = "http://www.paulgraham.com/fr.html"
# Load the URL into documents (multiple documents possible)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])
# Create vector store from documents
index = VectorStoreIndex.from_documents(documents)
# Create query engine so we can ask it questions:
query_engine = index.as_query_engine()
# Ask as many questions as you want against the loaded data:
response = query_engine.query("What are the 3 best advise by Paul to raise money?")
print(response)
The three best pieces of advice by Paul to raise money are:
1. Start with a low number when initially raising money. This allows for flexibility and increases the chances of raising more funds in the long run.
2. Aim to be profitable if possible. Having a plan to reach profitability without relying on additional funding makes the startup more attractive to investors.
3. Don't optimize for valuation. While valuation is important, it is not the most crucial factor in fundraising. Focus on getting the necessary funds and finding good investors instead.
Caderno de índice Google Colab Llama

Caderno de índice Google Colab Llama

Com este script, você criou uma ferramenta poderosa para extrair informações específicas de uma página da web simplesmente fazendo uma pergunta. Este é apenas um vislumbre do que pode ser alcançado com LlamaIndex e OpenAI ao consultar dados da web.

LlamaIndex vs Langchain: escolha com base em seu objetivo

Sua escolha entre LlamaIndex e Langchain dependerá do objetivo do seu projeto. Se você deseja desenvolver uma ferramenta de pesquisa inteligente, o LlamaIndex é uma escolha sólida, destacando-se como um mecanismo de armazenamento inteligente para recuperação de dados. Por outro lado, se você deseja criar um sistema como o ChatGPT com recursos de plug-in, Langchain é a sua escolha. Ele não apenas facilita múltiplas instâncias de ChatGPT e LlamaIndex, mas também expande a funcionalidade ao permitir a construção de agentes multitarefa. Por exemplo, com Langchain, você pode criar agentes capazes de executar código Python enquanto realiza uma pesquisa no Google simultaneamente. Resumindo, embora o LlamaIndex seja excelente no tratamento de dados, o Langchain orquestra várias ferramentas para fornecer uma solução holística.

Arte do logotipo LlamaIndex criada usando Midjourney

Arte do logotipo LlamaIndex criada usando Meio da jornada

Passei os últimos cinco anos mergulhando no fascinante mundo do Machine Learning e Deep Learning. Minha paixão e experiência me levaram a contribuir para mais de 50 projetos diversos de engenharia de software, com foco particular em AI/ML. Minha curiosidade contínua também me atraiu para o Processamento de Linguagem Natural, um campo que estou ansioso para explorar mais.