Pular para o conteúdo principal

O que é o Faiss (Facebook AI Similarity Search)?

O Faiss é uma biblioteca de código aberto projetada para pesquisa de similaridade eficiente e agrupamento de vetores densos, permitindo aplicativos como sistemas de recomendação e pesquisa de imagens.
Actualizado 29 de jul. de 2024  · 8 min de leitura

Os mecanismos de pesquisa tradicionais fazem um bom trabalho para encontrar correspondências exatas, mas geralmente ficam aquém quando se trata de identificar itens semelhantes com base em conteúdo como imagens, vídeos ou texto. Essa limitação pode prejudicar o desenvolvimento de aplicativos, como sistemas de recomendação, pesquisas de imagens e sistemas de detecção de anomalias.

Para superar isso, o Meta AI (antigo Facebook AI) desenvolveu o Pesquisa de similaridade de IA do Facebook (Faiss).

Faiss é uma biblioteca projetada especificamente para lidar com pesquisas de similaridade de forma eficiente, o que é especialmente útil ao lidar com grandes conjuntos de dados multimídia.

Neste artigo, explicarei o que é o Faiss e orientarei você sobre como começar a usá-lo em seus aplicativos de pesquisa.

O que é Faiss?

Faiss, abreviação de Facebook AI Similarity Search, é uma biblioteca de código aberto criada para pesquisa de similaridade e agrupamento de vetores densos. O Faiss pode ser usado para criar um índice e realizar pesquisas com velocidade e eficiência de memória notáveis. Além disso, ele aprimora o desempenho da pesquisa por meio de suas implementações de GPU para vários métodos de indexação.

Funcionalidade principal

O Faiss agiliza as pesquisas de vizinhos mais próximos indexando vetores usando algoritmos sofisticados como agrupamento k-means e quantização de produtos. Esses métodos ajudam o Faiss a organizar e recuperar vetores de forma eficiente, garantindo que as pesquisas de similaridade sejam rápidas e precisas. Veja a seguir uma análise mais detalhada dos algoritmos de indexação:

  1. K-means clustering: Esse algoritmo divide os dados em clusters, o que ajuda a restringir o espaço de pesquisa, concentrando-se nos clusters mais relevantes durante as consultas.
  2. Quantização do produto (PQ): O PQ comprime os vetores em códigos mais curtos, reduzindo significativamente o uso da memória e acelerando a pesquisa sem uma grande queda na precisão.
  3. Quantização otimizada de produtos (OPQ): Uma versão aprimorada do PQ, o OPQ gira os dados para se ajustar melhor à grade de quantização, melhorando a precisão dos vetores compactados.

Flexibilidade

O Faiss é bastante versátil quando se trata de medir a similaridade entre vetores, oferecendo uma variedade de métricas de distância para você escolher. Os principais são:

  • Distância euclidiana: Isso mede a distância em linha reta entre dois pontos, o que é ótimo quando você se preocupa com a similaridade geométrica dos vetores.
  • Similaridade de cosseno: Isso analisa o cosseno do ângulo entre dois vetores, concentrando-se mais em sua orientação do que em seu tamanho. É especialmente útil para a análise de textos em que a direção é mais importante do que o comprimento.

Essas opções permitem que você escolha a métrica que melhor se adapta às suas necessidades de dados e aplicativos.

O Faiss pode ser executado em CPUs e GPUs, usando hardware moderno para acelerar o processo de pesquisa. O Faiss foi projetado para várias plataformas de computação, desde computadores pessoais até clusters de computação de alto desempenho. Ele faz a transição suave entre os índices de CPU e GPU, e sua interface Python funciona bem com índices C++, facilitando a transição do teste para a implementação. Esse suporte multiplataforma garante que o Faiss possa ser usado com eficiência em vários ambientes de computação, otimizando o desempenho e o uso de recursos.

Principais recursos do Faiss

O Faiss é uma ferramenta de destaque para pesquisa de similaridade, repleta de recursos projetados para lidar com conjuntos de dados grandes e diversos de forma eficaz. Veja a seguir uma análise mais detalhada de alguns dos principais recursos que o tornam um ativo poderoso para tarefas com uso intensivo de dados.

Escalabilidade

O Faiss foi projetado para gerenciar conjuntos de dados de milhões a bilhões de vetores, o que é perfeito para aplicativos como grandes sistemas de recomendação ou bancos de dados massivos de imagens e vídeos. Ele usa técnicas avançadas, como sistemas de arquivos invertidos e gráficos hierárquicos navegáveis de mundo pequeno (HNSW), para manter a eficiência mesmo com conjuntos de dados extensos.

Velocidade

O Faiss é rápido devido a seus algoritmos e estruturas de dados otimizados. Ele usa k-means clustering, quantização de produtos e pesquisas otimizadas de força bruta para acelerar o processo. Se você estiver usando uma GPU, o Faiss pode ser até 20 vezes mais rápido no hardware mais recente da classe Pascal em comparação com suas versões de CPU. Essa velocidade é crucial para aplicativos em tempo real em que você precisa de respostas rápidas.

Precisão

O Faiss oferece flexibilidade na precisão, equilibrando velocidade e precisão com base no que você precisa. Você pode ajustá-lo para pesquisas altamente precisas ou optar por resultados mais rápidos e menos precisos. Há diferentes métodos e parâmetros de indexação para escolher, e você pode medir o desempenho com métricas como 1-recall@1 e 10-intersection para ver o desempenho em comparação com uma abordagem de força bruta.

Versatilidade

O Faiss pode lidar com diferentes tipos de dados, convertendo-os em representações vetoriais. Isso significa que você pode usá-lo para imagens, texto, áudio e muito mais, tornando-o útil em vários campos e setores. Ele suporta várias métricas de distância, incluindo distância euclidiana, similaridade de cosseno e distância de produto interno, permitindo que você adapte o processo de pesquisa às suas necessidades. O Faiss é adaptável a diversos aplicativos, como pesquisa de similaridade de imagens, recuperação de documentos de texto e impressão digital de áudio.

Casos de uso do Faiss

O Faiss é versátil e eficiente, o que o torna ideal para uma variedade de aplicações em diferentes setores. Vamos nos aprofundar em alguns dos principais casos de uso em que o Faiss se destaca.

Sistemas de recomendação

O Faiss é um divisor de águas para os sistemas de recomendação. Ele pode localizar rapidamente itens semelhantes em grandes conjuntos de dados, como produtos, filmes ou artigos.

Imagine uma plataforma de comércio eletrônico usando o Faiss para analisar o comportamento do usuário e as interações com o produto. Ele gera vetores de alta dimensão para essas interações e, ao realizar pesquisas nos vizinhos mais próximos, o Faiss identifica produtos semelhantes aos que o usuário visualizou ou comprou. Essa abordagem personalizada aumenta o envolvimento e a satisfação do usuário, o que impulsiona as vendas e a retenção de clientes.

Pesquisa de imagens e vídeos

O Faiss também alimenta mecanismos de pesquisa que recuperam imagens ou vídeos visualmente semelhantes, indexando vetores de alta dimensão do conteúdo multimídia. Pense em um aplicativo de organização de fotos que usa o Faiss para ajudar os usuários a encontrar todas as imagens de um ponto de referência específico em sua biblioteca de fotos. Ao converter imagens em vetores e indexar esses vetores com o Faiss, o aplicativo pode realizar rapidamente pesquisas de similaridade. Esse recurso é igualmente útil para plataformas de vídeo, nas quais o Faiss pode indexar e pesquisar clipes de vídeo semelhantes com base em recursos visuais e de áudio, aprimorando a descoberta de conteúdo e os recursos de recomendação.

Detecção de anomalias

Em detecção de anomaliaso Faiss é excelente para identificar outliers ou anomalias em conjuntos de dados, encontrando pontos que se desviam significativamente de seus vizinhos mais próximos.

Pegue detecção de fraudespor exemplo: as transações financeiras podem ser convertidas em vetores que incluem atributos como valor, local e horário da transação. O Faiss realiza pesquisas de similaridade para sinalizar transações que são discrepantes, indicando possíveis fraudes.

Na segurança de rede, o Faiss pode detectar padrões incomuns de tráfego de rede que podem significar ataques cibernéticos.

No controle de qualidade, ele pode identificar produtos defeituosos comparando suas características com as de produtos normais.

Recuperação de informações

O Faiss também é uma ferramenta fantástica para a recuperação de informações, ajudando você a encontrar documentos ou passagens relevantes com base na similaridade semântica. Isso é inestimável para mecanismos de pesquisa, bibliotecas digitais ou qualquer sistema que precise de recuperação de texto rápida e precisa.

Por exemplo, um mecanismo de pesquisa pode converter documentos e consultas em vetores de alta dimensão usando técnicas como word2vec ou BERT incorporação. Ao indexar esses vetores com o Faiss, o mecanismo de busca pode realizar rapidamente pesquisas de similaridade para recuperar documentos que correspondam à consulta do usuário em termos de significado, em vez de apenas correspondência de palavras-chave. Isso torna os resultados da pesquisa mais relevantes, aprimorando a experiência do usuário e a eficiência na recuperação de informações.

Como começar a usar o Faiss

Nesta seção, mostrarei a você como configurar o Faiss e usá-lo junto com o LangChain e OpenAI embeddings.

Instalação

Para instalar o Faiss, você pode usar o pip para obter a versão da CPU ou da GPU:

# For CPU
pip install faiss-cpu

# For GPU
pip install faiss-gpu

Além disso, para usar o Faiss com as incorporações LangChain e OpenAI, você precisará instalar os seguintes pacotes:

pip install -U langchain-community langchain-openai tiktoken

Aplicativo básico

Aqui você encontra um exemplo de código simples que demonstra como indexar vetores e realizar uma pesquisa de vizinho mais próximo usando Faiss, LangChain e OpenAI embeddings:

from langchain.document_loaders import WikipediaLoader
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

# Load content from Wikipedia using WikipediaLoader
loader = WikipediaLoader("Machine_learning")
document = loader.load()

# Chunking
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# Loading embeddings model
embeddings = OpenAIEmbeddings()

# Convert documents to vectors and index vectors
db = FAISS.from_documents(docs, embeddings)
print(db.index.ntotal)

# Search query
query = "What is machine learning?"
docs = db.similarity_search(query)
print(docs[0].page_content)

Se você quiser ver mais exemplos e se familiarizar com o Faiss, consulte a documentação e estes tutoriais.

Conclusão

O Faiss se destaca como uma ferramenta poderosa para a pesquisa eficiente de similaridade, oferecendo escalabilidade, velocidade, precisão e versatilidade. Ele pode lidar com grandes conjuntos de dados e realizar pesquisas de similaridade rápidas e precisas, o que o torna inestimável para vários aplicativos, como sistemas de recomendação, detecção de anomalias e recuperação de informações.

Usando o Faiss, podemos criar sistemas mais inteligentes e intuitivos que aprimoram as experiências do usuário e melhoram a eficiência operacional.

Para obter mais aprendizado e recursos, considere explorar outros artigos relevantes abaixo:

Temas

Aprenda IA com estes cursos!

Certificação disponível

Curso

Criando mecanismos de recomendação em Python

4 hr
9.7K
Aprenda a criar mecanismos de recomendação em Python usando técnicas de machine learning.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Os 5 principais bancos de dados vetoriais

Um guia abrangente para os melhores bancos de dados de vetores. Domine o armazenamento de dados de alta dimensão, decifre informações não estruturadas e aproveite a incorporação de vetores para aplicativos de IA.
Moez Ali's photo

Moez Ali

14 min

blog

As 16 principais estruturas e bibliotecas de IA: Um guia para iniciantes

Explore as melhores estruturas e bibliotecas de IA e seus conceitos básicos neste guia definitivo para profissionais de dados juniores que estão iniciando suas carreiras profissionais.
Yuliya Melnik's photo

Yuliya Melnik

15 min

AI shaking hands with a human

blog

As 5 melhores ferramentas de IA para ciência de dados em 2024: Aumente seu fluxo de trabalho hoje mesmo

Os recentes avanços em IA têm o potencial de mudar drasticamente a ciência de dados. Leia este artigo para descobrir as cinco melhores ferramentas de IA que todo cientista de dados deve conhecer
Javier Canales Luna's photo

Javier Canales Luna

9 min

blog

O que é DALL-E?

A IA DALL-E da OpenAI cria imagens a partir de texto, combinando linguagem e recursos visuais. O DALL-E 2 produz imagens de maior resolução e mais realistas.
Abid Ali Awan's photo

Abid Ali Awan

9 min

blog

Os 11 melhores assistentes de codificação de IA em 2024

Explore os melhores assistentes de codificação, incluindo ferramentas de código aberto, gratuitas e comerciais que podem aprimorar sua experiência de desenvolvimento.
Abid Ali Awan's photo

Abid Ali Awan

8 min

Tutorial

Tutorial da API de assistentes da OpenAI

Uma visão geral abrangente da API Assistants com nosso artigo, que oferece uma análise aprofundada de seus recursos, usos no setor, orientação de configuração e práticas recomendadas para maximizar seu potencial em vários aplicativos de negócios.
Zoumana Keita 's photo

Zoumana Keita

14 min

Ver maisVer mais