Bancos de dados vetoriais – Comunidade de desenvolvimento

1️⃣ Introdução 🔹 Vector Um vetor é simplesmente uma lista ordenada (matriz) de números. Pode representar pontos de dados em dimensões 2D, 3D ou mais altas. Exemplo: 2D → [3.5, 7.2]

3d → [1.2, -4.5, 6.0]

No aprendizado de máquina, os vetores são usados ​​para descrever posições em um espaço multidimensional. 🔹 A incorporação do vetor de um vetor de incorporação (ou apenas incorporação) é um tipo especial de vetor gerado por um modelo de incorporação. Objetivo: Represente dados complexos (texto, imagens, áudio etc.) de uma maneira que capture significado e similaridade. Todas as incorporações são vetores, mas nem todos os vetores são incorporados. As dimensões (por exemplo, 384, 768, 1536) são fixadas pelo design do modelo. Dimensões leves (384-512) → EG, Minilm-L6-V2 (384D), codificador de sentença universal (512d) padrão (768-1,536 Dimensões) → EG, ALM-MPNET-BASE-V2 (768D), Text-IMBEDDING-EMBEDDING-A-A-AG-A-AGA-A-AGA-A-A-IMBDING-A-EMBDING-A-EMBDING-2 (768D), Open-IMBEDDING-A-EMBDING-A-EMBDING-A-AGA-A-EMBED-A-EMBED-A-EMBED-A-EMBEDMA-2 (768D). Dimensões) → EG, OpenAI-Text-3-Large (3.072d) Dimensões mais altas = detalhes mais ricos, mas mais onerosos para armazenar e pesquisar. Representa o significado semântico dos dados, para que conceitos semelhantes sejam colocados juntos no espaço vetorial. “Dog” e “Puppy” → Incorporando vetores juntos. “Dog” e “Car” → Incorporando vetores distantes. 🔹 A codificação posicional da codificação posicional é uma técnica usada nos modelos de transformadores para fornecer informações de ordem de palavras às incorporações. Objetivo: Garanta que a sequência dos tokens é importante, portanto, frases com as mesmas palavras em ordens diferentes tenham significados diferentes. Implementado adicionando um vetor posicional a cada incorporação de token antes de alimentá -lo no modelo. Pode ser sinusoidal (funções matemáticas fixas). Ou aprendido (incorporação de posição treinável). Fórmula (codificação sinusoidal): PE (POS, 2i) = sin (Pos / 10000^(2i / d_model)) PE (POS, 2i+1) = cos (POS / 10000^(2i / d_model)) As incorporações no nível da sentença incluem informações posicionais, desde que o baked nos bastidores durante os transformadores durante os transformadores. Preserva o significado contextual distinguindo diferentes ordens de palavras. “Mades de cachorro” → um significado. “Man Bites Dog” → Significado muito diferente. 🔹 Banco de dados de vetores Um banco de dados vetorial é um sistema criado para armazenar e recuperar vetores, especialmente incorporados. Recursos principais: Persistência: Armazene grandes volumes de incorporações. Pesquisa de similaridade: encontre vizinhos mais próximos usando similaridade de cosseno, produto DOT ou distância euclidiana. Indexação: HNSW, fertilização in vitro, irritar, PQ para recuperação rápida. Funções do banco de dados: operações do CRUD, filtragem, replicação e escala. Objetivo: Ativar pesquisa semântica → encontrando resultados com base no significado em vez de correspondências exatas de palavras -chave. 2️⃣ Os vetores de persistência geralmente numeram em milhões ou bilhões, portanto, mantê -los apenas na memória não é prático. A persistência garante que as incorporações sejam armazenadas a longo prazo e sobrevivem a reinicializações ou falhas. CRUD: Crie, leia, atualize e exclua vetores. Durabilidade: os vetores são gravados em disco ou armazenamento distribuído. Persistência do índice: não apenas vetores brutos, mas também as estruturas de indexação (como os gráficos HNSW). 🔹 Exemplo: Criando uma incorporação (OpenAI) do OpenAI Importar OpenAI cliente = OpenAI () Response = client.embeddings.create (model = “text-embatedding-3-small”, input = “o gato sentado no tapete”) vetor = resposta.data[0].Embedding Print (Len (Vector)) # 1536 Dimensões Digite Modo de tela cheia Modo de tela cheia 🔹 Exemplo: Inserção (Elasticsearch) put/documents/_doc/1 {“content”: “o gato sentado no tapete”, “incorporação”: [0.12, -0.87, 0.33]
} Put/documents/_doc/2 {“content”: “o cachorro perseguiu a bola”, “incorporação”: [0.91, 0.04, -0.22]
} Digite o modo de tela de tela cheia Modo de tela cheia 3️⃣ Função do núcleo de pesquisa de similaridade de um banco de dados vetorial → Encontre os vetores mais próximos em significado de um vetor de consulta. Powers Pesquisa semântica, recomendações, detecção de fraude e geração de recuperação de recuperação (RAG). 🔹 Métricas de distância comum A similaridade de cosseno: mede o ângulo entre os vetores. Distância euclidiana: distância linear no espaço vetorial. PRODUTO DOT: MEDIDAS O alinhamento, frequentemente usado quando os vetores são normalizados. 4️⃣ Indexação de vetores de pesquisa diretamente sem um índice é muito lento para conjuntos de dados grandes. As estruturas de indexação organizam vetores para que as consultas no vizinho mais próximo possam ser respondidas com eficiência. Esses métodos implementam Pesquisa aproximada do vizinho mais próximo (RNA) → Negociação um pouco de precisão para obter grandes ganhos de velocidade. 🔹 Os algoritmos populares populares se aproximam da pesquisa de vizinhos mais próximos (RNA) é uma família de algoritmos que encontram os vetores mais próximos rapidamente, negociando uma pequena quantidade de precisão para obter ganhos maciços em velocidade e escalabilidade-os algoritmos a seguir são todos baseados em Ann. O HNSW (gráfico mundial pequeno de navegável hierárquico) constrói um gráfico de várias camadas, onde cada vetor se conecta aos seus vizinhos. ✅ Consultas rápidas, recall alto, suporta atualizações dinâmicas. ❌ Alto consumo de memória, complexo para sintonizar. AVF (índice de arquivo invertido) Clusters vetores em grupos (usando K-Means ou similar). No momento da consulta, apenas os clusters mais relevantes são pesquisados. ✅ Eficiente para conjuntos de dados grandes, reduz o escopo da pesquisa. ❌ A precisão depende da qualidade do cluster. O PQ (quantização do produto) comprime vetores em códigos compactos para salvar a memória. ✅ Ótimo para conjuntos de dados em escala de bilhões, reduz drasticamente o armazenamento. ❌ Alguma perda de precisão devido à compressão. Irrita (aproximar os vizinhos mais próximos) cria várias árvores de projeção aleatória para pesquisa. ✅ leve, simples de usar, bom para conjuntos de dados estáticos pesados ​​de leitura. ❌ Mais lento que o HNSW em grande escala, ruim para atualizações frequentes. Scann (vizinhos mais próximos escaláveis, Google) otimizado para dados de alta dimensão e em larga escala. ✅ Muito rápido, otimizado para cargas de trabalho em escala do Google, pegada de baixa memória. ❌ Menos apoio da comunidade, flexibilidade limitada fora do ecossistema do Google. Speed ​​Speed ​​vs. Memory: Alguns índices (como HNSW) são rápidos, mas com fome de memória. Precisão vs. Compressão: PQ economiza espaço, mas reduz a precisão. Dados dinâmicos vs. estáticos: o HNSW lida com as atualizações bem, enquanto o problema é melhor para dados estáticos. 5️⃣ Filtragem e metadados A pesquisa de similaridade pura geralmente retorna resultados que são semanticamente próximos, mas não contextualmente relevantes. Os aplicativos do mundo real combinam similaridade semântica com filtros estruturados (por exemplo, categoria, data, ID do usuário). Exemplo: “Encontre ingressos de suporte semelhantes do mês passado” ou “Recomendar produtos na categoria de sapatos”. 🔹 Como funciona cada vetor é armazenado com pares de metadados → valores-chave como: categoria: “Electronics” criou_at: “2025-09-01” User_id: 12345 No horário da consulta, o banco de dados executa uma pesquisa híbrida: 1) Aplica filtros de metadados. 2) Execute a pesquisa de similaridade apenas no subconjunto filtrado. 🔹 Obtendo o vetor de consulta (duas opções comuns) do OpenAI import OpenAi cliente = OpenAI () q = “fones de ouvido com cancelamento de ruído sem fio” EMB = client.embeddings.create (model = “text-embedding-3-small”, input = q) .data[0].Embedding # Comprimento = 1536 Digite Modo Full -Screen Mode [
{
“knn”: {
“embedding”: {
“vector”: [/* paste emb here, e.g., 0.12, -0.87, 0.33, … */]”K”: 3}}}, {“termo”: {“categoria”: “Electronics”}}]}}} Digite o modo de saída do modo de tela cheia

Fonte

Você pode ter perdido