InteligĂȘncia artificial
LlamaIndex: Aumente seus aplicativos LLM com dados personalizados facilmente

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.
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):
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.
- EstĂĄgio de consulta: Aqui, a base de conhecimento Ă© vasculhada em busca de contexto relevante para ajudar os LLMs a responder perguntas.
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.
- 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-turbopara geração de texto etext-embedding-ada-002para 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 â
LlamaCPPe allama2-chat-13Bpara geração de texto eBAAI/bge-small-enpara recuperação e incorporação. - Para utilizar o
LlamaCPP, siga o guia de instalação fornecido. Certifique-se de instalar ollama-cpp-pythonpacote, 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.
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 Meio da jornada
















