Introducción
384.
Este conjunto de datos puede usarse para analizar los aspectos de diseño, dimensionamiento y rendimiento de una aplicación de búsqueda vectorial a gran escala,
en un entorno real, construida sobre datos textuales generados por los usuarios.
Detalles del conjunto de datos
Parquet en un bucket de S3
Recomendamos a los usuarios realizar primero un ejercicio de dimensionamiento para estimar los requisitos de almacenamiento y memoria de este conjunto de datos consultando la documentación.
Pasos
1
Crear la tabla
Cree la tabla El
hackernews para almacenar las publicaciones & sus embeddings, así como los atributos asociados:id es solo un entero que se incrementa. Los atributos adicionales pueden usarse en predicados para entender
la búsqueda por similitud vectorial combinada con posfiltrado/prefiltrado, como se explica en la documentación2
Cargar datos
Para cargar los datos desde el archivo Insertar 28,74 millones de filas en la tabla llevará unos minutos.
Parquet, ejecute la siguiente sentencia SQL:3
Crear un índice de similitud vectorial
Ejecute la siguiente instrucción SQL para definir y crear un índice de similitud vectorial en la columna Los parámetros y las consideraciones de rendimiento para la creación y la búsqueda de índices se describen en la documentación.
La instrucción anterior usa los valores 64 y 512, respectivamente, para los hiperparámetros HNSW
vector de la tabla hackernews:M y ef_construction.
Debe seleccionar cuidadosamente los valores óptimos de estos parámetros evaluando el tiempo de construcción del índice y la calidad de los resultados de búsqueda
en función de los valores seleccionados.La construcción y el almacenamiento del índice podrían tardar incluso unos minutos o hasta una hora para el conjunto de datos completo de 28,74 millones, según la cantidad de núcleos de CPU disponibles y el ancho de banda del almacenamiento.4
Realizar una búsqueda ANN
Una vez creado el índice de similitud vectorial, las consultas de búsqueda vectorial usarán automáticamente el índice:La primera carga del índice vectorial en memoria podría tardar unos segundos o minutos.
Query
5
Generar embeddings para la consulta de búsqueda
Sentence Transformers ofrece modelos de embedding locales y fáciles de usar para capturar el significado semántico de oraciones y párrafos.El conjunto de datos de HackerNews contiene embeddings vectoriales generados con el modelo
all-MiniLM-L6-v2.A continuación se incluye un script de Python de ejemplo para mostrar cómo generar
vectores de embedding de forma programática usando el paquete de Python A continuación se muestra un ejemplo de la ejecución del script de Python anterior junto con los resultados de búsqueda por similitud
(solo se imprimen 100 caracteres de cada uno de los 20 posts principales):Código para la aplicación anterior:
sentence_transformers. El vector de embedding de búsqueda se pasa luego como argumento a la función cosineDistance() en la consulta `SELECT`.Aplicación demo de resumen
El ejemplo anterior ilustró la búsqueda semántica y la recuperación de documentos con ClickHouse.A continuación se presenta una aplicación de ejemplo de IA generativa muy sencilla pero con gran potencial.La aplicación realiza los siguientes pasos:- Acepta un topic introducido por el usuario
- Genera un vector de embedding para el topic mediante
SentenceTransformerscon el modeloall-MiniLM-L6-v2 - Recupera publicaciones/comentarios muy relevantes mediante búsqueda por similitud vectorial en la tabla
hackernews - Usa
LangChainy la API de Chatgpt-3.5-turbode OpenAI para resumir el contenido recuperado en el paso n.º 3. Las publicaciones y los comentarios recuperados en el paso n.º 3 se pasan como contexto a la API de Chat y son el nexo clave en Generative AI.
OPENAI_API_KEY. La API key de OpenAI se puede obtener tras registrarse en https://platform.openai.com.Esta aplicación demuestra un caso de uso de Generative AI aplicable a múltiples dominios empresariales como:
análisis de sentimiento de clientes, automatización del soporte técnico, extracción de información de conversaciones de usuarios, documentos legales, registros médicos,
transcripciones de reuniones, estados financieros, etc.