Em essência, um banco de dados vetorial é um sistema criado especificamente para armazenar e recuperar dados em formato de vetor. Aqui, vetor é um conjunto ordenado de valores numéricos que pode representar desde coordenadas espaciais até atributos de features — como nos casos de uso em machine learning e ciência de dados, em que vetores geralmente representam as características de objetos. O banco vetorial consegue armazenar e recuperar esses vetores de forma eficiente.
Embedding vetorial é o processo de representar objetos — como palavras, frases ou entidades — como vetores em um espaço contínuo. Essa técnica é usada para converter dados categóricos e de alta dimensão em vetores contínuos e de menor dimensão, que podem ser usados de forma mais eficaz por algoritmos de machine learning. Embeddings vetoriais são especialmente populares em processamento de linguagem natural (NLP), onde servem para representar palavras ou expressões.
A ideia principal por trás de embeddings é capturar relações semânticas entre objetos. No contexto de embeddings de palavras, por exemplo, termos com significados semelhantes são representados por vetores próximos no espaço vetorial. Isso permite que modelos de machine learning entendam melhor as relações contextuais e semânticas entre palavras.
Aproveitando o conceito de embeddings vetoriais, Large Language Models (LLMs) utilizam essas representações numéricas para resolver tarefas complexas de compreensão e geração de linguagem.
LLMs e embeddings vetoriais
Como exemplo concreto, a arquitetura do modelo por trás do chat GTP envolve o uso de vetores. O modelo processa dados de entrada, como texto, convertendo-os em vetores numéricos.
Esses vetores capturam informações semânticas e contextuais da entrada, permitindo que o modelo entenda e gere respostas coerentes e relevantes para o contexto. A arquitetura Transformer, sobre a qual o GPT-3.5 é construído, utiliza mecanismos de self-attention para ponderar a importância de diferentes palavras em uma sequência, aprimorando ainda mais a capacidade do modelo de capturar relações e contexto.
Self-attention se refere à capacidade do modelo de atribuir diferentes graus de importância às palavras dentro da sequência de entrada.
Em resumo, o modelo GPT-3.5 opera sobre representações vetorizadas da linguagem para executar várias tarefas de compreensão e geração de texto. Essa abordagem baseada em vetores é um dos fatores-chave do sucesso do modelo em uma ampla gama de aplicações relacionadas à linguagem.
Explorando vetores na prática: uma jornada com PG Vector
PG Vector é uma busca por similaridade vetorial open source para Postgres. Vamos direto ao ponto e criar um banco com Docker. Crie um arquivo chamado docker-compose.yml e, no terminal, rode: docker-compose up -d
O próximo passo é criar uma tabela, e neste exemplo vamos catalogar os recursos de aprendizado da DataCamp, incluindo courses, blogs, tutorials, podcasts, cheat sheets, code alongs e certifications.
CREATETABLE resource (
id serialCONSTRAINT"PK_resource"PRIMARYKEY,
name varcharNOTNULL,
content textNOTNULL,
slug varcharNOTNULL,typevarcharNOTNULL,
embedding vector,CONSTRAINT"UQ_resource"UNIQUE(name,type));Tecnologia
A coluna embedding será gerada a partir de um objeto JSON em string que representa os atributos do recurso { name, content, slug, type }. Para criar esse embedding vetorial, vamos usar um modelo de embedding.
Um desses modelos disponível no AWS Bedrock é o amazon.titan-embed-text-v1. A configuração do Bedrock não é tratada neste artigo; é apenas um exemplo entre muitos modelos de embedding capazes de obter resultados semelhantes. O objetivo principal é receber um texto de entrada, usar um modelo de embedding para gerar vetores e então armazená-los na coluna embedding.
Com a capacidade de armazenar dados junto de seus embeddings vetoriais, desbloqueamos o poder dos bancos vetoriais, permitindo interações em linguagem natural com o banco e a recuperação de resultados realmente relevantes.
Basta formular qualquer pergunta que você queira “fazer aos seus dados” e aplicar o mesmo embedding a esse texto. Veja como fica a consulta em SQL:
Essa consulta utiliza uma busca por similaridade cosseno. O parâmetro $1 representa o embedding resultante do texto da sua pergunta de entrada, enquanto o parâmetro $2, que funciona como um limite de similaridade, é uma variável que vale a pena experimentar. Seu valor ideal depende de fatores como o tamanho do seu dataset e o nível de relevância desejado, definindo a granularidade das informações recuperadas.
Com tudo isso pronto, criar uma interface no estilo chat fica simples. Os detalhes de implementação fogem ao escopo deste artigo, mas aqui vão alguns exemplos usando meu dataset da DataCamp, que inclui mais de 600 registros:
Conclusão e próximos passos
Neste artigo, exploramos o universo dos bancos de dados vetoriais, usando o PG Vector para potencializar nossas capacidades de armazenamento e busca. Ao iniciar sua jornada com embeddings, há muito mais para descobrir. Para se aprofundar no PG Vector, confira o readme, que traz mais detalhes e links para clientes na sua linguagem favorita.
Um passo natural após entender embeddings vetoriais é o Retrieval Augmented Generation (RAG). Esse é o processo de injetar dados contextuais em Large Language Models (LLMs). Assim, o RAG fornece ao modelo conhecimento além de seus dados de treino, viabilizando respostas mais informadas e alinhadas ao contexto.
Você também encontra diversos recursos da DataCamp que abordam outros aspectos de bancos vetoriais, incluindo:
Um guia completo com os melhores bancos de dados vetoriais. Domine o armazenamento de dados de alta dimensão, decifrar informações não estruturadas e aproveitar as incorporações vetoriais para aplicações de IA.
Explore o intrincado mundo dos bancos de dados gráficos com nosso guia para iniciantes. Entenda as relações entre os dados, aprofunde-se na comparação entre bancos de dados relacionais e gráficos e explore casos de uso práticos.
As incorporações de vetores são representações numéricas de palavras ou frases que capturam seus significados e relacionamentos, ajudando os modelos de machine learning a entender o texto com mais eficiência.
Obtenha insights de dados não estruturados com modelagem de tópicos. Explore os principais conceitos, técnicas como LSA e LDA, exemplos práticos e muito mais.
Descubra como melhorar o PostgreSQL com recursos de pesquisa vetorial usando o pgvector. Este tutorial te mostra como instalar, usar as funções básicas e integrar com ferramentas de IA.
O que são bancos de dados vetoriais?
Em essência, um banco de dados vetorial é um sistema criado especificamente para armazenar e recuperar dados em formato de vetor. Aqui, vetor é um conjunto ordenado de valores numéricos que pode representar desde coordenadas espaciais até atributos de features — como nos casos de uso em machine learning e ciência de dados, em que vetores geralmente representam as características de objetos. O banco vetorial consegue armazenar e recuperar esses vetores de forma eficiente.
Imagem por Gary Alway
Embedding vetorial
Embedding vetorial é o processo de representar objetos — como palavras, frases ou entidades — como vetores em um espaço contínuo. Essa técnica é usada para converter dados categóricos e de alta dimensão em vetores contínuos e de menor dimensão, que podem ser usados de forma mais eficaz por algoritmos de machine learning. Embeddings vetoriais são especialmente populares em processamento de linguagem natural (NLP), onde servem para representar palavras ou expressões.
A ideia principal por trás de embeddings é capturar relações semânticas entre objetos. No contexto de embeddings de palavras, por exemplo, termos com significados semelhantes são representados por vetores próximos no espaço vetorial. Isso permite que modelos de machine learning entendam melhor as relações contextuais e semânticas entre palavras.
Aproveitando o conceito de embeddings vetoriais, Large Language Models (LLMs) utilizam essas representações numéricas para resolver tarefas complexas de compreensão e geração de linguagem.
LLMs e embeddings vetoriais
Como exemplo concreto, a arquitetura do modelo por trás do chat GTP envolve o uso de vetores. O modelo processa dados de entrada, como texto, convertendo-os em vetores numéricos.
Esses vetores capturam informações semânticas e contextuais da entrada, permitindo que o modelo entenda e gere respostas coerentes e relevantes para o contexto. A arquitetura Transformer, sobre a qual o GPT-3.5 é construído, utiliza mecanismos de self-attention para ponderar a importância de diferentes palavras em uma sequência, aprimorando ainda mais a capacidade do modelo de capturar relações e contexto.
Self-attention se refere à capacidade do modelo de atribuir diferentes graus de importância às palavras dentro da sequência de entrada.
Em resumo, o modelo GPT-3.5 opera sobre representações vetorizadas da linguagem para executar várias tarefas de compreensão e geração de texto. Essa abordagem baseada em vetores é um dos fatores-chave do sucesso do modelo em uma ampla gama de aplicações relacionadas à linguagem.
Explorando vetores na prática: uma jornada com PG Vector
PG Vector é uma busca por similaridade vetorial open source para Postgres. Vamos direto ao ponto e criar um banco com Docker. Crie um arquivo chamado
docker-compose.ymle, no terminal, rode:docker-compose up -dO próximo passo é criar uma tabela, e neste exemplo vamos catalogar os recursos de aprendizado da DataCamp, incluindo courses, blogs, tutorials, podcasts, cheat sheets, code alongs e certifications.
A coluna embedding será gerada a partir de um objeto JSON em string que representa os atributos do recurso { name, content, slug, type }. Para criar esse embedding vetorial, vamos usar um modelo de embedding.
Um desses modelos disponível no AWS Bedrock é o
amazon.titan-embed-text-v1. A configuração do Bedrock não é tratada neste artigo; é apenas um exemplo entre muitos modelos de embedding capazes de obter resultados semelhantes. O objetivo principal é receber um texto de entrada, usar um modelo de embedding para gerar vetores e então armazená-los na coluna embedding.Operações e buscas vetoriais
Com a capacidade de armazenar dados junto de seus embeddings vetoriais, desbloqueamos o poder dos bancos vetoriais, permitindo interações em linguagem natural com o banco e a recuperação de resultados realmente relevantes.
Basta formular qualquer pergunta que você queira “fazer aos seus dados” e aplicar o mesmo embedding a esse texto. Veja como fica a consulta em SQL:
Essa consulta utiliza uma busca por similaridade cosseno. O parâmetro $1 representa o embedding resultante do texto da sua pergunta de entrada, enquanto o parâmetro $2, que funciona como um limite de similaridade, é uma variável que vale a pena experimentar. Seu valor ideal depende de fatores como o tamanho do seu dataset e o nível de relevância desejado, definindo a granularidade das informações recuperadas.
Com tudo isso pronto, criar uma interface no estilo chat fica simples. Os detalhes de implementação fogem ao escopo deste artigo, mas aqui vão alguns exemplos usando meu dataset da DataCamp, que inclui mais de 600 registros:
Conclusão e próximos passos
Neste artigo, exploramos o universo dos bancos de dados vetoriais, usando o PG Vector para potencializar nossas capacidades de armazenamento e busca. Ao iniciar sua jornada com embeddings, há muito mais para descobrir. Para se aprofundar no PG Vector, confira o readme, que traz mais detalhes e links para clientes na sua linguagem favorita.
Um passo natural após entender embeddings vetoriais é o Retrieval Augmented Generation (RAG). Esse é o processo de injetar dados contextuais em Large Language Models (LLMs). Assim, o RAG fornece ao modelo conhecimento além de seus dados de treino, viabilizando respostas mais informadas e alinhadas ao contexto.
Você também encontra diversos recursos da DataCamp que abordam outros aspectos de bancos vetoriais, incluindo:
Bom código — e que suas aventuras com vetores sejam sempre reveladoras e recompensadoras!