Entre em contato

LlamaIndex: Aumente seus aplicativos LLM com dados personalizados facilmente

InteligĂȘncia artificial

LlamaIndex: Aumente seus aplicativos LLM com dados personalizados facilmente

mm
LhamaIndex

Grandes modelos de linguagem (LLMs), como a sĂ©rie GPT da OpenAI, foram treinados em uma gama diversificada de dados publicamente acessĂ­veis, demonstrando capacidades notĂĄveis ​​em geração de texto, sumarização, resposta a perguntas e planejamento. Apesar de sua versatilidade, uma questĂŁo frequentemente levantada gira em torno da integração perfeita desses 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, consistindo no ajuste dos pesos do modelo para incorporar conhecimento de conjuntos de dados específicos. No entanto, esse processo não é isento de desafios. Exige um esforço substancial na preparação dos dados, juntamente com um procedimento de otimização complexo, exigindo um certo nível de conhecimento em aprendizado de måquina. Além disso, as implicaçÔes financeiras podem ser significativas, principalmente ao lidar com 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 imediataAlĂ©m disso, o aprendizado em contexto pode nem sempre ser tĂŁo preciso ou confiĂĄvel quanto o ajuste fino, especialmente ao lidar com dados altamente especializados ou tĂ©cnicos. O prĂ©-treinamento do modelo em uma ampla 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. Isso Ă© particularmente problemĂĄtico quando os dados privados sĂŁo de um nicho de mercado ou indĂșstria.

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, ex-cientista pesquisador da Uber. Ao experimentar o GPT-3 no outono passado, Liu percebeu as limitaçÔes do modelo em relação ao tratamento de dados privados, como arquivos pessoais. Essa 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 a importar dados de diversas fontes e formatos, encapsulando-os em uma representação simplificada 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 projetados 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 dadosApĂł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 embeddings vetoriais e deduz metadados. Entre os Ă­ndices, o "VectorStoreIndex" costuma ser a escolha mais utilizada.

Tipos de Ă­ndices no LlamaIndex: chave para dados organizados

O LlamaIndex oferece diferentes tipos de índices, cada um para diferentes necessidades e casos de uso. No centro desses índices estão os "nós", como discutido acima. Vamos tentar entender os índices do LlamaIndex, 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.
  • A Vantagem: 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.
  • A Vantagem: 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.
  • A Vantagem: 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.
  • A Vantagem: 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
  • Observação: 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 o OpenAI 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 a 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 busca 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 plugins, o Langchain Ă© a sua escolha. Ele nĂŁo apenas facilita mĂșltiplas instĂąncias do ChatGPT e do LlamaIndex, mas tambĂ©m expande a funcionalidade, permitindo a construção de agentes multitarefa. Por exemplo, com o Langchain, vocĂȘ pode criar agentes capazes de executar cĂłdigo Python enquanto realiza uma busca no Google simultaneamente. Em resumo, enquanto o LlamaIndex se destaca no tratamento de dados, o Langchain orquestra mĂșltiplas 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.