Aprimorando a Inteligência e a Eficiência do ChatGPT: O Poder do LangChain e do Milvus
Esta publicação foi originalmente publicada em TheSequence e é republicada aqui com permissão.
Embora o ChatGPT tenha ganhado popularidade significativa, com muitas pessoas utilizando sua API para desenvolver seus chatbots ou explorar Langchain, ele não está isento de desafios.
ChatGPT pode frequentemente criar a ilusão de inteligência. Os usuários podem interagir com um chatbot que emprega jargão complexo, apenas para perceber mais tarde que o bot gera respostas sem sentido ou fabrica links 404 inexistentes.
O armazenamento de contexto é outro obstáculo. O ChatGPT retém apenas registros da sessão em andamento, o que significa que um bot treinado há meros dias pode agir como se não tivesse nenhuma lembrança da sessão. Essa "amnésia" destaca a necessidade de um chatbot que possa preservar e recuperar dados.
Custo e desempenho são considerações significativas ao usar o ChatGPT ou até mesmo modelos menores de código aberto para inferência. Em muitos casos, isso pode ser caro, exigindo várias A100s e tempo substancial. Os desenvolvimentos devem abordar os gargalos de desempenho antes de incorporar grandes modelos de linguagem (LLMs) em aplicações em tempo real.
Aprimorar a inteligência do ChatGPT é onde a combinação de LangChain e Milvus entra em cena. Com a integração de LangChain e Milvus, os LLMs podem aproveitar o poder dos armazenamentos vetoriais para aumentar a inteligência e a eficiência. Como tudo isso funciona? Vamos mergulhar no poder do LangChain e do Milvus em aplicações de LLM, depois explorar como construir e aprimorar sua própria aplicação de Conteúdo Gerado por IA (AIGC).
LangChain para aplicação baseada em LLM
LangChain é um framework para desenvolver aplicações alimentadas por modelos de linguagem. O framework LangChain é projetado em torno dos seguintes princípios:
- Ciente dos dados: conectar um modelo de linguagem a outras fontes de dados
- Agêntico: permitir que um modelo de linguagem interaja com seu ambiente
O robusto framework do LangChain consiste em uma variedade de módulos, como Models, Prompts, Memory, Indexes, Chains, Agents e Callbacks, que são as abstrações centrais que podem ser vistas como os blocos de construção de qualquer aplicação alimentada por LLM. Para cada módulo, o LangChain fornece interfaces padrão e extensíveis. O LanghChain também fornece integrações externas e até implementações de ponta a ponta para uso pronto para uso.
O wrapper de LLM está no centro da funcionalidade do LangChain, oferecendo uma série de provedores de LLM, como OpenAI, Cohere, Hugging Face, etc. Ele fornece uma interface padrão para todos os LLMs e inclui ferramentas comuns para trabalhar com eles.
Banco de dados vetorial para LLMs
O LangChain oferece uma variedade impressionante de Grandes Modelos de Linguagem (LLMs) para atender a diversas necessidades. Mas isso não é tudo. O LangChain vai além do básico ao integrar vários bancos de dados vetoriais, como Milvus, Faiss e outros, para habilitar a funcionalidade de busca semântica. Por meio de seu VectorStore Wrapper, o LangChain padroniza as interfaces necessárias para simplificar o carregamento e a recuperação de dados. Por exemplo, usando a classe Milvus, o LangChain permite o armazenamento de vetores de características que representam documentos usando o método from_text. O método similarity_search então busca vetores da declaração de consulta para encontrar os documentos mais próximos correspondentes à consulta no espaço de embeddings, facilitando assim a busca semântica com facilidade.
Aprofundando-nos no assunto, percebemos que os bancos de dados vetoriais têm um papel significativo em aplicações de LLM, como fica evidente no chatgpt-retrieval-plugin. Mas não é aí que sua utilidade termina. Bancos de dados vetoriais têm uma infinidade de outros casos de uso, tornando-os um componente indispensável das aplicações de LLM:
- Bancos de Dados Vetoriais facilitam o armazenamento baseado em contexto, um recurso útil em plataformas de LLM como Auto-GPT e BabyAGI. Essa capacidade aprimora a compreensão contextual e a retenção de memórias.
- Bancos de Dados Vetoriais fornecem cache semântico para plataformas de LLM como GPTCache, o que otimiza o desempenho e permite economia de custos.
- Bancos de Dados Vetoriais possibilitam recursos de conhecimento de documentos, como OSSChat, que resolvem alucinações.
- E muito mais.
Se você quiser saber mais sobre Milvus e Auto-GPT, pode ler este artigo sobre como o Milvus impulsiona o Auto-GPT. Na seção a seguir, você aprenderá como LangChain e Milvus podem lidar com alucinações.
Por que LangChain + Milvus podem resolver alucinações
Em inteligência artificial, há um ditado de que o sistema frequentemente gerará "alucinações", o que significa fabricar fatos não relacionados à realidade. Alguns até descrevem o ChatGPT como "um cara confiante que consegue escrever bobagens muito convincentes", e o problema das alucinações prejudica a credibilidade do ChatGPT.
Bancos de Dados Vetoriais ilustrados no diagrama a seguir abordam a questão das alucinações. Primeiro, armazene os documentos oficiais como vetores de texto no Milvus e pesquise documentos relevantes em resposta à pergunta (a linha laranja no diagrama). O Chatgpt responde à pergunta com base no contexto correto, resultando na resposta esperada (a linha verde no diagrama).
Diagrama mostrando Langchain, Milvus e ChatGPT
O exemplo acima mostra que combinar Milvus e ChatGPT é muito simples. Não há necessidade de rotular dados, treiná-los ou desenvolvê-los, nem ajustá-los – você precisa converter dados de texto em dados vetoriais e inseri-los no Milvus. A combinação Langchain-Milvus-ChatGPT cria armazenamento de texto, e a resposta final é derivada da referência ao conteúdo na biblioteca de documentos.
Isso garante que o chatbot seja alimentado com o conhecimento correto, reduzindo efetivamente a probabilidade de erros. Por exemplo, como administrador da comunidade, quando preciso responder a perguntas relacionadas à comunidade, posso armazenar todos os documentos da documentação oficial do Milvus.
Quando um usuário pergunta: "Como usar o Milvus para criar um chatbot", o chatbot responderá à pergunta com base na documentação oficial, dizendo ao usuário que ela fornece exemplos de criação de aplicações e extração de documentos relevantes. Esse tipo de resposta é confiável. Em resumo, não precisamos retreinar ou processar tudo; precisamos fornecer o conhecimento contextual necessário ao ChatGPT. Quando enviamos uma solicitação, o robô pode fornecer contexto relacionado ao conteúdo oficial.
Você está animado depois de descobrir o poder do Milvus e do Langchain para o ChatGPT? Se sim, então prepare-se para levar o desenvolvimento da sua aplicação adiante. Vamos nos unir e criar um chatbot aprimorado usando os incríveis recursos combinados do LangChain e do Milvus!
Crie sua própria aplicação com LangChain e Milvus
0. Pré-requisitos
Primeiro, instale o LangChain usando o comando pip install langchain. Quanto ao Milvus, você tem duas opções à sua disposição. Instale e inicie o Milvus de código aberto no seu sistema local ou opte pela opção em nuvem para experimentar o Zilliz – um serviço cloud-native para Milvus que oferece uma versão de teste gratuita. Zilliz é um serviço fácil, acessível e robusto, então vamos nos aprofundar em como usar o Zilliz Cloud para a aplicação, e o LangChain facilita o uso.
1. Carregue dados para a base de conhecimento
Primeiro, precisamos carregar dados em um formato padrão. Além de carregar o texto, precisamos dividi-lo em pequenos pedaços. Isso é necessário para garantir que passemos apenas os menores e mais relevantes trechos de texto para o modelo de linguagem.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
loader = TextLoader('state_of_the_union.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
Em seguida, agora que temos pequenos blocos de texto, precisamos criar embeddings para cada trecho de texto e armazená-los em um armazenamento vetorial. A criação de embeddings é feita para que possamos usar os embeddings para encontrar apenas os trechos de texto mais relevantes a serem enviados ao modelo de linguagem. Isso é feito com as linhas a seguir. Aqui usamos os embeddings da OpenAI e o Zilliz Cloud.
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={
"uri": "YOUR_ZILLIZ_CLOUD_URI",
"user": "YOUR_ZILLIZ_CLOUD_USERNAME",
"password": "YOUR_ZILLIZ_CLOUD_PASSWORD",
"secure": True
}
)
2. Consultar dados
Então, agora que carregamos os dados, podemos usá-los em uma cadeia de perguntas e respostas.
Confira o trecho de código abaixo, que aborda a parte 3, "Resolver alucinações", deste artigo. Ele pode ajudar você a compreender totalmente o conceito.
Isso envolve pesquisar documentos relacionados à nossa consulta fornecida na base de conhecimento. Para fazer isso, use o método similarity_search para gerar o vetor de características da consulta e, em seguida, pesquisar os vetores no Zilliz Cloud em busca de correspondências semelhantes, juntamente com o conteúdo dos documentos associados.
query = "What did the president say about Ketanji Brown Jackson"
docs = vector_db.similarity_search(query)
Em seguida, execute load_qa_chain para obter a resposta final. Ele fornece a interface mais genérica para responder perguntas. Ele carrega uma cadeia que pode fazer QA para os documentos de entrada e usa TODO o texto nos documentos.
O código abaixo usa a OpenAI como o LLM. Ao executar, a QAChain recebe input_documents e question como entrada. O input_documents é o documento relacionado à query no banco de dados. Em seguida, o LLM organiza a resposta com base no conteúdo desses documentos e na pergunta feita.
from langchain.chains.question_answering import load_qa_chain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
chain = load_qa_chain(llm, chain_type="stuff")
chain.run(input_documents=docs, question=query)
Por que o Milvus é melhor para a aplicação AIGC
Então, se você deseja tornar suas aplicações de Conteúdo Gerado por Inteligência Artificial (AIGC) mais confiáveis, é necessário ter um banco de dados vetorial que represente texto. Mas por que escolher o banco de dados vetorial Milvus?
- Busca semântica: O Milvus armazena os vetores de características semânticas extraídos, permitindo uma recuperação semântica inteligente e conveniente, o que é difícil para bancos de dados tradicionais. Bancos de dados vetoriais tornam a recuperação semântica mais inteligente e conveniente.
- Escalabilidade: O suporte para escalonamento em cluster e na nuvem possibilita armazenar e recuperar bilhões de entidades facilmente. A escalabilidade é essencial para aplicações em que velocidade e eficiência são fundamentais.
- Busca híbrida: O Milvus oferece suporte à busca mista de dados vetoriais e escalares, o que pode atender a diferentes cenários e requisitos de busca.
- APIs ricas: O Milvus fornece APIs em várias linguagens, incluindo Python, Java, Go, Restful e outras; o Milvus é fácil de integrar e usar em várias aplicações.
- Integrar LLMs: Integrações com vários LLMs, incluindo OpenAI Plugin, Langchain e LLamaIndex, permitem que os usuários personalizem ainda mais suas aplicações.
- Múltiplas configurações: Projetamos o Milvus para oferecer suporte a muitos casos de uso, desde seu laptop local até produtos em nuvem, como Milvus-lite, contêineres docker, implantações distribuídas e uso na nuvem. Isso torna o Milvus facilmente adaptável a diferentes tamanhos de aplicações, dando suporte a tudo, desde pequenos projetos até recuperação de dados em nível empresarial.
Próximo passo para sua aplicação
No âmbito da IA, avanços constantemente novos e tecnologias transformadoras podem elevar sua aplicação ao próximo nível. Aqui, abordaremos duas maneiras de melhorar sua aplicação: implementar GPTCache e ajustar modelos de embedding e prompts. Isso pode melhorar o desempenho e a qualidade da busca, diferenciar sua aplicação e proporcionar uma melhor experiência ao usuário.
Melhore o desempenho da sua aplicação AIGC - GPTCache
Se você deseja otimizar o desempenho e economizar custos para sua aplicação AIGC, confira o GPTCache. Este projeto inovador foi desenvolvido para criar um cache semântico para armazenar respostas de LLM.
Então, como isso ajuda? Ao armazenar em cache respostas para LLMs, e o banco de dados vetorial pode recuperar perguntas semelhantes para obter a resposta em cache, sua aplicação pode responder aos usuários de forma rápida e precisa. Com o GPTCache, acessar respostas em cache se torna muito fácil—sem mais gerações redundantes de respostas, economizando tempo e recursos computacionais. O GPTCache vai um passo além ao melhorar a experiência geral do usuário. Fornecer respostas mais rápidas e precisas satisfará sua resposta, e sua aplicação será mais bem-sucedida.
Melhore a qualidade da sua busca - ajuste seus modelos de embedding e prompts
Além de utilizar o GPTCache, ajustar seus modelos de embedding e prompts pode melhorar a qualidade dos seus resultados de busca. Modelos de embedding são um componente crucial das aplicações de IA, pois são os blocos de construção que traduzem texto em vetores numéricos, que o deep learning pode processar. Ao ajustar seus modelos de embedding, você pode melhorar a precisão e a relevância dos seus resultados de busca semântica. Isso envolve ajustar os modelos para priorizar palavras-chave e frases específicas e ajustar seus mecanismos de ponderação e pontuação para refletir melhor as necessidades e preferências do seu público-alvo. Com um modelo de embedding bem treinado, sua aplicação AIGC pode interpretar e categorizar com precisão a entrada do usuário, levando a resultados de busca mais precisos.
Além disso, os prompts usados nas aplicações desempenham um papel essencial na melhoria da qualidade dos resultados de busca. Prompts são as frases que sua IA usa para solicitar entradas aos usuários, como "Como posso ajudar você hoje?" ou "O que você tem em mente?". Ao testar e modificar esses prompts, você pode melhorar a qualidade e a relevância dos seus resultados de busca. Por exemplo, se sua aplicação é voltada para um setor ou público específico, você pode adaptar seus prompts para refletir a linguagem e a terminologia usadas por esse grupo. Isso ajuda a orientar os usuários para consultas de busca mais relevantes, levando a uma experiência mais satisfatória ao corresponder às suas necessidades com mais precisão. Ao refinar os prompts para atender aos requisitos dos usuários, você pode ajudá-los a obter buscas mais bem-sucedidas, levando assim a uma base de usuários mais satisfeita.
No final
Em resumo, LangChain e Milvus são as receitas perfeitas para desenvolvedores que criam aplicações baseadas em LLM do zero. LangChain oferece uma interface padrão e fácil de usar para LLMs, enquanto Milvus entrega recursos notáveis de armazenamento e recuperação. LangChain e Milvus podem aprimorar a inteligência e a eficiência do ChatGPT, o que ajuda você a ir além dos obstáculos das alucinações. Melhor ainda, com GPTCache, prompt e tecnologias de ajuste de modelo, podemos melhorar nossas aplicações de IA de maneiras nunca antes imaginadas.
À medida que continuamos a expandir os limites da IA, vamos colaborar e criar um futuro mais brilhante para AIGC explorar o potencial ilimitado da inteligência artificial.
Continue lendo

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.

Vector Databases vs. Object-Relational Databases
Use a vector database for AI-powered similarity search; use an object-relational database for complex data modeling with both relational integrity and object-oriented features.

Vector Databases vs. Document Databases
Use a vector database for similarity search and AI-powered applications; use a document database for flexible schema and JSON-like data storage.



