Armazenamentos Vetoriais

Este guia ajudará você a entender como usar o Armazenamento Vetorial Rememberizer como um desenvolvedor.

O Armazenamento de Vetores Rememberizer simplifica o processo de lidar com dados vetoriais, permitindo que você se concentre na entrada de texto e aproveite o poder dos vetores para várias aplicações, como pesquisa e análise de dados.

Introdução

O Rememberizer Vector Store fornece uma interface fácil de usar para lidar com dados vetoriais, enquanto abstrai a complexidade das incorporações vetoriais. Alimentado pelo PostgreSQL com a extensão pgvector, o Rememberizer Vector Store permite que você trabalhe diretamente com texto. O serviço lida com a fragmentação, vetorização e armazenamento dos dados de texto, facilitando para você se concentrar na lógica central de sua aplicação.

Para uma compreensão mais profunda dos conceitos teóricos por trás das incorporações vetoriais e bancos de dados vetoriais, veja O que são Incorporações Vetoriais e Bancos de Dados Vetoriais?.

Visão Técnica

Como Funcionam os Armazenamentos de Vetores

Os Armazenamentos de Vetores Rememberizer convertem texto em representações vetoriais de alta dimensão (embeddings) que capturam o significado semântico. Isso possibilita:

  1. Busca Semântica: Encontrar documentos com base no significado em vez de apenas palavras-chave

  2. Correspondência de Similaridade: Identificar conteúdo conceitualmente relacionado

  3. Recuperação Eficiente: Localizar rapidamente informações relevantes em grandes conjuntos de dados

Componentes Chave

  • Processamento de Documentos: O texto é dividido em pedaços de tamanho otimizado com limites sobrepostos para preservação de contexto

  • Vetorização: Os pedaços são convertidos em embeddings usando modelos de ponta

  • Indexação: Algoritmos especializados organizam vetores para busca de similaridade eficiente

  • Processamento de Consultas: Consultas de busca são vetorizadas e comparadas com embeddings armazenados

Arquitetura

Rememberizer implementa armazenamentos de vetores usando:

  • PostgreSQL com extensão pgvector: Para armazenamento e busca de vetores eficientes

  • Organização baseada em coleções: Cada armazenamento de vetores tem sua própria coleção isolada

  • Acesso orientado a API: Pontos finais RESTful simples para todas as operações

Começando

Criando um Armazenamento de Vetores

  1. Navegue até a Seção de Armazenamentos de Vetores no seu painel

  2. Clique em "Criar novo Armazenamento de Vetores":

    • Um formulário aparecerá solicitando que você insira os detalhes.

  3. Preencha os Detalhes:

    • Nome: Forneça um nome único para o seu armazenamento de vetores.

    • Descrição: Escreva uma breve descrição do armazenamento de vetores.

    • Modelo de Embedding: Selecione o modelo que converte texto em vetores.

    • Algoritmo de Indexação: Escolha como os vetores serão organizados para busca.

    • Métrica de Busca: Defina como a similaridade entre vetores é calculada.

    • Dimensão do Vetor: O tamanho das embeddings de vetores (tipicamente 768-1536).

  4. Envie o Formulário:

    • Clique no botão "Criar". Você receberá uma notificação de sucesso, e o novo armazenamento aparecerá na sua lista de armazenamentos de vetores.

Opções de Configuração

Modelos de Embedding

Modelo
Dimensões
Descrição
Melhor Para

openai/text-embedding-3-large

1536

Modelo de embedding de alta precisão da OpenAI

Aplicações de produção que exigem máxima precisão

openai/text-embedding-3-small

1536

Modelo de embedding menor e mais rápido da OpenAI

Aplicações com requisitos de maior taxa de transferência

Algoritmos de Indexação

Algoritmo
Descrição
Compensações

IVFFLAT (padrão)

Arquivo invertido com compressão plana

Bom equilíbrio entre velocidade e precisão; funciona bem para a maioria dos conjuntos de dados

HNSW

Mundo Pequeno Navegável Hierárquico

Melhor precisão para grandes conjuntos de dados; maiores requisitos de memória

Métricas de Busca

Métrica
Descrição
Melhor Para

cosseno (padrão)

Mede o ângulo entre vetores

Correspondência de similaridade de propósito geral

produto interno (ip)

Produto escalar entre vetores

Quando a magnitude do vetor é importante

L2 (Euclidiana)

Distância em linha reta entre vetores

Quando relações espaciais são importantes

Gerenciando Armazenamentos de Vetores

  1. Visualizar e Editar Armazenamentos de Vetores:

    • Acesse o painel de gerenciamento para visualizar, editar ou excluir armazenamentos de vetores.

  2. Visualizando Documentos:

    • Navegue por documentos individuais e seus metadados associados dentro de um armazenamento de vetores específico.

  3. Estatísticas:

    • Veja estatísticas detalhadas, como o número de vetores armazenados, desempenho de consultas e métricas operacionais.

Gerenciamento de Chaves de API

As chaves de API são usadas para autenticar e autorizar o acesso aos endpoints da API do Rememberizer Vector Store. O gerenciamento adequado das chaves de API é essencial para manter a segurança e a integridade dos seus armazéns de vetores.

Criando Chaves de API

  1. Vá para a página de detalhes do seu Vector Store

  2. Navegue até a Seção de Gerenciamento de Chaves de API:

    • Ela pode ser encontrada na aba "Configuração"

  3. Clique em "Adicionar Chave de API":

    • Um formulário aparecerá solicitando que você insira os detalhes.

  4. Preencha os Detalhes:

    • Nome: Forneça um nome para a chave de API para ajudá-lo a identificar seu caso de uso.

  5. Envie o Formulário:

    • Clique no botão "Criar". A nova chave de API será gerada e exibida. Certifique-se de copiá-la e armazená-la com segurança. Esta chave é usada para autenticar solicitações a esse vetor store específico.

Revogando Chaves de API

Se uma chave de API não for mais necessária, você pode excluí-la para evitar qualquer uso indevido potencial.

Por razões de segurança, você pode querer girar suas chaves de API periodicamente. Isso envolve gerar uma nova chave e revogar a antiga.

Usando a API do Armazenamento Vetorial

Após criar um Armazenamento Vetorial e gerar uma chave de API, você pode interagir com ele usando a API REST.

Exemplos de Código

import requests
import json

API_KEY = "sua_chave_api_aqui"
VECTOR_STORE_ID = "vs_abc123"  # Substitua pelo seu ID de armazenamento de vetores
BASE_URL = "https://api.rememberizer.a

# Carregar um documento para o armazenamento vetorial
def upload_document(file_path, document_name=None):
    if document_name is None:
        document_name = file_path.split("/")[-1]
    
    with open(file_path, "rb") as f:
        files = {"file": (document_name, f)}
        headers = {"x-api-key": API_KEY}
        
        response = requests.post(
            f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents",
            headers=headers,
            files=files
        )
        
        if response.status_code == 201:
            print(f"Documento '{document_name}' carregado com sucesso!")
            return response.json()
        else:
            print(f"Erro ao carregar o documento: {response.text}")
            return None

# Carregar conteúdo de texto para o armazenamento vetorial
def upload_text(content, document_name):
    headers = {
        "x-api-key": API_KEY,
        "Content-Type": "application/json"
    }
    
    data = {
        "name": document_name,
        "content": content
    }
    
    response = requests.post(
        f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents/text",
        headers=headers,
        json=data
    )
    
    if response.status_code == 201:
        print(f"Documento de texto '{document_name}' carregado com sucesso!")
        return response.json()
    else:
        print(f"Erro ao carregar texto: {response.text}")
        return None

# Pesquisar no armazenamento vetorial
def search_vector_store(query, num_results=5, prev_chunks=1, next_chunks=1):
    headers = {"x-api-key": API_KEY}
    
    params = {
        "q": query,
        "n": num_results,
        "prev_chunks": prev_chunks,
        "next_chunks": next_chunks
    }
    
    response = requests.get(
        f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents/search",
        headers=headers,
        params=params
    )
    
    if response.status_code == 200:
        results = response.json()
        print(f"Encontrados {len(results['matched_chunks'])} correspondências para '{query}'")
        
        # Imprimir o melhor resultado
        if results['matched_chunks']:
            top_match = results['matched_chunks'][0]
            print(f"Melhor correspondência (distância: {top_match['distance']}):")
            print(f"Documento: {top_match['document']['name']}")
            print(f"Conteúdo: {top_match['matched_content']}")
        
        return results
    else:
        print(f"Erro ao pesquisar: {response.text}")
        return None

# Exemplo de uso
# upload_document("path/to/document.pdf")
# upload_text("Este é um texto de exemplo para ser vetorizado", "sample-document.txt")
# search_vector_store("Como funciona a similaridade de vetores?")

Melhores Práticas de Migração

Siga estas recomendações para uma migração bem-sucedida:

  1. Planeje com Antecedência:

    • Estime o volume de dados e o tempo necessário para a migração

    • Programe a migração durante períodos de baixo tráfego

    • Aumente o espaço em disco antes de iniciar grandes migrações

  2. Teste Primeiro:

    • Crie um vetor de teste no Rememberizer

    • Migre um pequeno subconjunto de dados (100-1000 vetores)

    • Verifique a funcionalidade de busca com consultas-chave

  3. Validação de Dados:

    • Compare a contagem de documentos antes e depois da migração

    • Execute consultas de benchmark para garantir resultados semelhantes

    • Valide se os metadados estão corretamente preservados

  4. Otimize para Desempenho:

    • Use operações em lote para eficiência

    • Considere a colocação geográfica dos bancos de dados de origem e destino

    • Monitore os limites de taxa da API e ajuste os tamanhos dos lotes conforme necessário

  5. Etapas Pós-Migração:

    • Verifique a criação do índice no Rememberizer

    • Atualize as configurações do aplicativo para apontar para o novo vetor de armazenamento

    • Mantenha o banco de dados de origem como backup até que a migração seja verificada

Para referência detalhada da API e documentação de endpoints, visite a página APIs de Armazenamento Vetorial.


Certifique-se de manusear as chaves da API de forma segura e siga as melhores práticas para gerenciamento de chaves da API.

Last updated