Mejorando los Resultados de Búsqueda con Embeddings Vectoriales y Redis
En el paisaje digital de hoy, la capacidad de buscar información de manera efectiva es crucial. Los usuarios esperan una funcionalidad de búsqueda rápida y precisa en casi todas las aplicaciones y sitios web. Para mejorar los resultados de búsqueda, los arquitectos y desarrolladores deben evaluar continuamente nuevos métodos y arquitecturas. Uno de los enfoques más prometedores es utilizar embeddings vectoriales generados por modelos de aprendizaje profundo, que mejoran significativamente la precisión y relevancia de los resultados de búsqueda.
Entendiendo los Embeddings Vectoriales
Muchas organizaciones están aprovechando las técnicas de indexación para convertir sus datos en un espacio vectorial. Al representar los datos como vectores, se pueden realizar búsquedas de similitud para identificar los resultados más relevantes. Este artículo explora cómo los modelos de aprendizaje profundo pueden crear embeddings vectoriales y cómo Redis puede ser utilizado para una búsqueda eficiente y precisa.
Creando Embeddings Vectoriales
Para ilustrar el proceso, trabajaremos con un conjunto de datos de productos de Amazon. Este tutorial describe los pasos:
- Creando embeddings vectoriales para el conjunto de datos de productos de Amazon
- Indexándolos con Redis
- Buscando vectores similares
Configurando tu Entorno
Comienza por crear un nuevo directorio y un cuaderno de Jupyter. Descarga el archivo CSV del conjunto de datos de la fuente designada y guárdalo en el directorio ./data/
. Asegúrate de estar usando Python 3.8 e instala las dependencias necesarias:
pip install redis pandas sentence-transformers
Cargando los Datos
Una vez que las dependencias estén instaladas, importa las bibliotecas necesarias:
import pandas as pd
import redis
from redis.commands.search.field import VectorField, TextField, TagField
from redis.commands.search.query import Query
from redis.commands.search.result import Result
Carga los datos de productos de Amazon en un DataFrame de Pandas, truncando los campos de texto largos a un máximo de 512 caracteres, que es óptimo para el generador de embeddings pre-entrenado:
df = pd.read_csv('./data/amazon_products.csv')
df['keywords'] = df['keywords'].str.slice(0, 512)
# Agrega una clave primaria y filtra los datos
Conectando a Redis
Con los datos de productos cargados, conéctate a Redis. Puedes usar una instancia gratuita de Redis de RedisLabs. Regístrate y crea una instancia de Redis, anotando los detalles de conexión, incluido el password.
Generando Embeddings
Generaremos embeddings usando el modelo de Sentence Transformer distilroberta-v1. Este modelo se puede cargar para crear los embeddings:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('distilroberta-v1')
embeddings = model.encode(df['keywords'].tolist())
Funciones Utilitarias
Define funciones utilitarias para cargar datos de productos y crear índices:
def load_product_data():
# Función para cargar y procesar datos de productos
pass
def create_index(vector_field):
# Función para crear índice en Redis
pass
Métodos de Indexación
Se exploran dos métodos clave de indexación:
- Indexación Plana: Un método simple donde todos los puntos de datos son indexados. Realiza una búsqueda de fuerza bruta, que puede ser computacionalmente intensiva para conjuntos de datos grandes.
- HNSW (Mundo Pequeño Navegable Hierárquico): Un algoritmo más complejo que organiza los datos en una estructura de grafo, proporcionando una búsqueda eficiente de vecinos aproximados más cercanos.
Indexación y Consulta de Datos
Comienza con la indexación plana:
create_index(VectorField('embeddings'))
Consulta el índice para encontrar los 5 vecinos más cercanos para un vector de consulta dado:
query_vector = embeddings[0]
query_result = redis_connection.search(Query(f'*=>[KNN 5 @embeddings $vec]').sort_by('distance'))
Ahora, repite la consulta con la indexación HNSW:
create_index(VectorField('embeddings', 'HNSW'))
Con esta configuración, consulta para encontrar artículos similares de manera eficiente.
Reflexiones Finales
Este tutorial demuestra cómo los embeddings vectoriales y Redis pueden llevar tus capacidades de búsqueda al siguiente nivel. Para un análisis más profundo, consulta el código completo en nuestro repositorio de GitHub, donde también puedes encontrar contexto adicional y ejemplos, incluyendo cómo realizar búsquedas de similitud con imágenes.
Aprende Más sobre Búsquedas Mejoradas por IA
Implementar tecnología de IA en la búsqueda puede mejorar enormemente la experiencia del usuario. Explora varios modelos y enfoques para descubrir cuál se adapta mejor a tus necesidades.
Dejar un comentario
Todos los comentarios se revisan antes de su publicación.
Este sitio está protegido por hCaptcha y se aplican la Política de privacidad de hCaptcha y los Términos del servicio.