Saltar al contenido principal

¿Qué es Faiss (Facebook AI Similarity Search)?

Faiss es una biblioteca de código abierto diseñada para la búsqueda eficiente de similitudes y la agrupación de vectores densos, que permite aplicaciones como los sistemas de recomendación y la búsqueda de imágenes.
Actualizado 29 jul 2024  · 8 min de lectura

Los motores de búsqueda tradicionales hacen un buen trabajo a la hora de encontrar coincidencias exactas, pero a menudo se quedan cortos cuando se trata de identificar elementos similares basados en contenidos como imágenes, vídeos o texto. Esta limitación puede dificultar el desarrollo de aplicaciones como los sistemas de recomendación, las búsquedas de imágenes y los sistemas de detección de anomalías.

Para superar esto, Meta AI (antes Facebook AI) desarrolló Búsqueda por similitud de la IA de Facebook (Faiss).

Faiss es una biblioteca diseñada específicamente para realizar búsquedas de similitud de forma eficaz, lo que resulta especialmente útil cuando se trabaja con grandes conjuntos de datos multimedia.

En este artículo, te explicaré qué es Faiss y te orientaré sobre cómo empezar a utilizarlo en tus aplicaciones de búsqueda.

¿Qué es Faiss?

Faiss, abreviatura de Facebook AI Similarity Search, es una biblioteca de código abierto creada para la búsqueda de similitudes y la agrupación de vectores densos. Faiss puede utilizarse para construir un índice y realizar búsquedas con notable rapidez y eficiencia de memoria. Además, mejora el rendimiento de la búsqueda gracias a sus implementaciones en la GPU de varios métodos de indexación.

Funciones básicas

Faiss agiliza las búsquedas del vecino más próximo indexando vectores mediante sofisticados algoritmos como agrupación k-means y la cuantificación del producto. Estos métodos ayudan a Faiss a organizar y recuperar vectores de forma eficaz, garantizando que las búsquedas de similitud sean rápidas y precisas. Aquí tienes una visión más detallada de los algoritmos de indexación:

  1. Agrupación de K-means: Este algoritmo divide los datos en clusters, lo que ayuda a reducir el espacio de búsqueda centrándose en los clusters más relevantes durante las consultas.
  2. Cuantificación del producto (PQ): PQ comprime los vectores en códigos más cortos, reduciendo significativamente el uso de memoria y acelerando la búsqueda sin una gran caída de la precisión.
  3. Cuantificación optimizada del producto (OPQ): Una versión mejorada de PQ, OPQ rota los datos para ajustarlos mejor a la rejilla de cuantización, mejorando la precisión de los vectores comprimidos.

Flexibilidad

Faiss es bastante versátil cuando se trata de medir la similitud entre vectores, ofreciendo una variedad de métricas de distancia entre las que elegir. Los principales son:

  • Distancia euclidiana: Mide la distancia en línea recta entre dos puntos, lo que es estupendo cuando te interesa la similitud geométrica de los vectores.
  • Similitud del coseno: Examina el coseno del ángulo entre dos vectores, centrándose más en su orientación que en su tamaño. Es especialmente útil para el análisis de textos en los que la dirección importa más que la longitud.

Estas opciones te permiten elegir la métrica que mejor se adapte a tus datos y necesidades de aplicación.

Faiss puede ejecutarse tanto en CPU como en GPU, utilizando hardware moderno para acelerar el proceso de búsqueda. Faiss está diseñado para diversas plataformas informáticas, desde ordenadores personales hasta clusters informáticos de alto rendimiento. Pasa sin problemas de los índices de CPU a los de GPU, y su interfaz Python funciona bien con los índices C++, lo que facilita el paso de las pruebas al despliegue. Este soporte multiplataforma garantiza que Faiss pueda utilizarse eficazmente en diversos entornos informáticos, optimizando el rendimiento y el uso de recursos.

Características principales de Faiss

Faiss es una herramienta sobresaliente para la búsqueda de similitudes, repleta de funciones diseñadas para manejar con eficacia conjuntos de datos grandes y diversos. Aquí tienes un vistazo más de cerca a algunas de las capacidades básicas que lo convierten en un potente activo para tareas intensivas en datos.

Escalabilidad

Faiss está diseñado para gestionar conjuntos de datos de millones a miles de millones de vectores, lo que es perfecto para aplicaciones como grandes sistemas de recomendación o bases de datos masivas de imágenes y vídeos. Utiliza técnicas avanzadas como los sistemas de archivos invertidos y los gráficos de pequeño mundo navegable jerárquico (HNSW) para mantener la eficacia incluso con grandes conjuntos de datos.

Velocidad

Faiss es rápido gracias a sus algoritmos y estructuras de datos optimizados. Utiliza la agrupación de k-means, la cuantificación de productos y búsquedas de fuerza bruta optimizadas para acelerar las cosas. Si utilizas una GPU, Faiss puede ser hasta 20 veces más rápido en el nuevo hardware de clase Pascal en comparación con sus versiones para CPU. Esta velocidad es crucial para aplicaciones en tiempo real en las que necesitas respuestas rápidas.

Precisión

Faiss te da flexibilidad en la precisión, equilibrando velocidad y precisión en función de lo que necesites. Puedes ajustarlo para realizar búsquedas muy precisas o para obtener resultados más rápidos y menos exactos. Hay diferentes métodos de indexación y parámetros para elegir, y puedes medir el rendimiento con métricas como 1-recall@1 y 10-intersection para ver lo bien que lo hace en comparación con un enfoque de fuerza bruta.

Versatilidad

Faiss puede manejar distintos tipos de datos convirtiéndolos en representaciones vectoriales. Esto significa que puedes utilizarlo para imágenes, texto, audio y mucho más, lo que lo hace útil en diversos campos e industrias. Admite varias métricas de distancia, como la distancia euclidiana, la similitud coseno y la distancia producto interno, lo que te permite adaptar el proceso de búsqueda a tus necesidades. Faiss es adaptable a diversas aplicaciones, como la búsqueda por similitud de imágenes, la recuperación de documentos de texto y la dactiloscopia de audio.

Casos de uso de Faiss

Faiss es versátil y eficaz, por lo que se adapta perfectamente a una gran variedad de aplicaciones en distintos sectores. Veamos algunos de los principales casos de uso en los que destaca Faiss.

Sistemas de recomendación

Faiss cambia las reglas del juego de los sistemas de recomendación. Puede encontrar rápidamente elementos similares dentro de enormes conjuntos de datos, como productos, películas o artículos.

Imagina una plataforma de comercio electrónico que utiliza Faiss para analizar el comportamiento de los usuarios y las interacciones con los productos. Genera vectores de alta dimensión para estas interacciones, y realizando búsquedas en los vecinos más próximos, Faiss identifica productos similares a los que un usuario ha visto o comprado. Este enfoque personalizado aumenta el compromiso y la satisfacción del usuario, lo que impulsa las ventas y la retención de clientes.

Búsqueda de imágenes y vídeos

Faiss también impulsa motores de búsqueda que recuperan imágenes o vídeos visualmente similares indexando vectores de alta dimensión a partir de contenidos multimedia. Piensa en una aplicación de organización de fotos que utilice Faiss para ayudar a los usuarios a encontrar todas las imágenes de un punto de referencia concreto en su fototeca. Al convertir las imágenes en vectores e indexar estos vectores con Faiss, la aplicación puede realizar rápidamente búsquedas de similitud. Esta capacidad es igual de útil para las plataformas de vídeo, donde Faiss puede indexar y buscar videoclips similares basándose en características visuales y de audio, mejorando las funciones de descubrimiento y recomendación de contenidos.

Detección de anomalías

En detección de anomalíasFaiss es excelente para identificar valores atípicos o anomalías en conjuntos de datos, encontrando puntos que se desvían significativamente de sus vecinos más próximos.

Toma detección del fraudepor ejemplo: las transacciones financieras pueden convertirse en vectores que incluyen atributos como el importe de la transacción, la ubicación y la hora. Faiss realiza búsquedas de similitud para señalar las transacciones que son atípicas, lo que indica un posible fraude.

En seguridad de redes, Faiss puede detectar patrones de tráfico de red inusuales que podrían significar ciberataques.

En el control de calidad, puede identificar los productos defectuosos comparando sus características con las de los productos normales.

Recuperación de información

Faiss también es una herramienta fantástica para la recuperación de información, ya que ayuda a encontrar documentos o pasajes relevantes basándose en la similitud semántica. Esto tiene un valor incalculable para los motores de búsqueda, las bibliotecas digitales o cualquier sistema que necesite una recuperación de texto rápida y precisa.

Por ejemplo, un motor de búsqueda puede convertir documentos y consultas en vectores de alta dimensión utilizando técnicas como word2vec o BERT incrustaciones. Al indexar estos vectores con Faiss, el motor de búsqueda puede realizar rápidamente búsquedas de similitud para recuperar documentos que coincidan con la consulta del usuario en significado, en lugar de limitarse a la coincidencia de palabras clave. Esto hace que los resultados de la búsqueda sean más relevantes, mejorando la experiencia del usuario y la eficacia en la recuperación de información.

Primeros pasos con Faiss

En esta sección, te mostraré cómo configurar Faiss y utilizarlo junto con LangChain y incrustaciones OpenAI.

Instalación

Para instalar Faiss, puedes utilizar pip para obtener la versión para CPU o GPU:

# For CPU
pip install faiss-cpu

# For GPU
pip install faiss-gpu

Además, para utilizar Faiss con las incrustaciones LangChain y OpenAI, necesitarás instalar los siguientes paquetes:

pip install -U langchain-community langchain-openai tiktoken

Aplicación básica

He aquí un sencillo ejemplo de código que demuestra cómo indexar vectores y realizar una búsqueda del vecino más próximo utilizando incrustaciones de Faiss, LangChain y OpenAI:

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)

Si quieres ver más ejemplos y familiarizarte con Faiss, consulta la documentación oficial de documentación y estos tutoriales.

Conclusión

Faiss destaca como una potente herramienta para la búsqueda eficiente de similitudes, que ofrece escalabilidad, velocidad, precisión y versatilidad. Puede manejar grandes conjuntos de datos y realizar búsquedas de similitud rápidas y precisas, lo que la hace inestimable para diversas aplicaciones como los sistemas de recomendación, la detección de anomalías y la recuperación de información.

Utilizando Faiss, podemos crear sistemas más inteligentes e intuitivos que mejoren la experiencia del usuario y la eficacia operativa.

Para obtener más información y recursos, considera la posibilidad de explorar otros artículos relevantes a continuación:

Temas

Aprende IA con estos cursos

curso

Building Recommendation Engines in Python

4 hr
9.7K
Learn to build recommendation engines in Python using machine learning techniques.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Las 5 mejores bases de datos vectoriales

Una guía completa de las mejores bases de datos vectoriales. Domina el almacenamiento de datos de alta dimensión, descifra la información no estructurada y aprovecha las incrustaciones de vectores para aplicaciones de IA.
Moez Ali's photo

Moez Ali

14 min

blog

Los 16 mejores marcos y bibliotecas de IA: Guía para principiantes

Explore los mejores marcos y bibliotecas de IA y sus fundamentos en esta guía definitiva para profesionales de datos noveles que comienzan su carrera profesional.
Yuliya Melnik's photo

Yuliya Melnik

15 min

blog

¿Qué es la IA simbólica?

La inteligencia artificial (IA) simbólica es un subcampo de la IA que se centra en el procesamiento y la manipulación de símbolos o conceptos, en lugar de datos numéricos.
DataCamp Team's photo

DataCamp Team

4 min

blog

7 proyectos de IA para todos los niveles

Desarrolla tu portafolio y mejora tus habilidades para crear soluciones innovadoras a problemas complejos trabajando en proyectos de IA.
Abid Ali Awan's photo

Abid Ali Awan

8 min

tutorial

Tutorial de la API de OpenAI Assistants

Una visión completa de la API Assistants con nuestro artículo, que ofrece una mirada en profundidad a sus características, usos en la industria, guía de configuración y las mejores prácticas para maximizar su potencial en diversas aplicaciones empresariales.
Zoumana Keita 's photo

Zoumana Keita

14 min

tutorial

IA explicable - Comprender y confiar en los modelos de aprendizaje automático

Sumérjase en la IA explicable (XAI) y aprenda a generar confianza en los sistemas de IA con LIME y SHAP para la interpretabilidad de modelos. Comprender la importancia de la transparencia y la equidad en las decisiones basadas en la IA.
Zoumana Keita 's photo

Zoumana Keita

12 min

Ver másVer más