Tamanho de fonte
Alto contraste
Altura de linha

Embedding com LangChain: Transformando Texto em Vetores

Avatar de Luiza Cherobini Pereira Luiza Cherobini Pereira
3 minutos de leitura 5 meses atrás

Se você está começando seus estudos em Inteligência Artificial e quer entender como transformar texto em vetores utilizando a biblioteca LangChain, você está no lugar certo! Neste tutorial, vamos explorar o conceito de embeddings e como aplicá-los de forma prática com LangChain. Vamos lá ampreder Embeddings com LangChain?

pontos luminosos em uma fundo escuro

O que é Embedding?

Embedding é uma técnica utilizada em processamento de linguagem natural (NLP) para transformar palavras ou frases em vetores de números. Esses vetores representam semanticamente o texto, permitindo que operações matemáticas sejam realizadas para calcular a semelhança entre diferentes textos.

Por que usar Embeddings?

Os embeddings facilitam a busca semântica, permitindo encontrar trechos de texto que são semanticamente semelhantes à pergunta do usuário. Isso é extremamente útil em diversas aplicações de IA, como chatbots, sistemas de recomendação e análise de sentimentos.

Como Funciona o Embedding com LangChain?

LangChain é uma biblioteca que fornece uma interface padronizada para interagir com diversos modelos de embeddings. A seguir, vamos ver como transformar texto em vetores utilizando LangChain.

Passo 1: Instalando o LangChain

Primeiro, precisamos instalar a biblioteca LangChain. Você pode fazer isso utilizando o pip:

pip install langchain

Passo 2: Importando as Bibliotecas Necessárias

Vamos importar as bibliotecas necessárias para realizar o embedding de textos.

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import VectorStore

Passo 3: Transformando Texto em Vetores

Agora, vamos transformar um texto em vetores utilizando o modelo de embeddings da OpenAI.

# Inicializando o modelo de embeddings
embeddings_model = OpenAIEmbeddings()

# Texto que queremos transformar em vetor
texto = "O céu é azul"

# Realizando o embedding do texto
vetor = embeddings_model.embed_text(texto)

print(vetor)

Passo 4: Armazenando os Vetores em uma VectorStore

Para facilitar a busca semântica, podemos armazenar os vetores em uma VectorStore.

# Inicializando a VectorStore
vector_store = VectorStore()

# Adicionando o vetor à VectorStore
vector_store.add_vector(vetor, texto)

# Realizando uma busca semântica
query = "Qual é a cor do céu?"
query_vector = embeddings_model.embed_text(query)
resultados = vector_store.search(query_vector)

print(resultados)

Benefícios de Usar Embeddings com LangChain

  • Busca Semântica: Permite encontrar trechos de texto que são semanticamente semelhantes à pergunta do usuário.
  • Eficiência: Os vetores ocupam menos espaço de armazenamento e permitem operações matemáticas rápidas.
  • Flexibilidade: LangChain fornece uma interface padronizada para interagir com diversos modelos de embeddings.

Conclusão

Neste tutorial, vimos como transformar texto em vetores utilizando embeddings com LangChain. Essa técnica é fundamental para diversas aplicações de IA e facilita a busca semântica de textos. Se você está começando na área de Inteligência Artificial, entender e aplicar embeddings é um passo importante para desenvolver soluções mais inteligentes e eficientes.

Esperamos que este tutorial tenha sido útil para você. Continue explorando e experimentando com LangChain e outras ferramentas de IA. Até a próxima!

Se você gostou deste tutorial sobre Embedding com LangChain, não se esqueça de compartilhar e deixar seus comentários abaixo. Queremos saber como você está aplicando essas técnicas em seus projetos!

Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov

Oi Luiza, obrigado pelo conteúdo!


Estou tentando criar um RAG local com llama3, FAISS e LangChain.


Estou fazendo assim:

MODEL = 'llama3.2'
model = Ollama(model=MODEL)
embeddings = OllamaEmbeddings(model=MODEL)


E depois de criar meu vectorstore, estou usando-o como um retriever desta forma:

retriever = vectorstore.as_retriever(
  search_type='similarity',
  search_kwargs={'k':5}
)


Assim como a documentação atualizada sugere.


Estou tendo dificuldades com os documentos recuperados. Na maioria das vezes, os resultados da pesquisa de similaridade não é muito bom e retorna documentos não relacionados, e obviamente isso impacta na resposta do LLM.


Tenho um documento word que foi splitado em chunks e inserido no vectorstore. Em algumas (poucas) questões que faço ao modelo, o documento retornado é satisfatorio e a resposta é boa, mas na maior parte dos casos os documentos retornados aparentemente não tem relação semantica com a questão enviada.


Por exemplo, pergunto 'O que significa a sigla ABC?' e mesmo o documento tendo uma linha contendo:


"ABC - Significado da sigla"


Esse trecho não é retornado. Você sabe se esse tipo de problema está mais relacionado ao meu modelo de embeddings ou ao meu vectorstore?


Estou tendo dificuldade em fazer com que os documentos retornados sejam realmente relevantes para a construção da resposta.


Desde já, obrigado!!

Pa
Paulo_sa_araujo 22/10/2024