Saltar al contenido principal

Introducción

El conjunto de datos de Hacker News contiene 28.74 millones de publicaciones y sus embeddings vectoriales. Los embeddings se generaron con el modelo all-MiniLM-L6-v2 de SentenceTransformers. La dimensión de cada vector de embedding es 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

ClickHouse pone a disposición el conjunto de datos completo con embeddings vectoriales como un único archivo 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 hackernews para almacenar las publicaciones & sus embeddings, así como los atributos asociados:
El 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ón
2

Cargar datos

Para cargar los datos desde el archivo Parquet, ejecute la siguiente sentencia SQL:
Insertar 28,74 millones de filas en la tabla llevará unos minutos.
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 vector de la tabla hackernews:
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 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:
Query
La primera carga del índice vectorial en memoria podría tardar unos segundos o minutos.
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 sentence_transformers. El vector de embedding de búsqueda se pasa luego como argumento a la función cosineDistance() en la consulta `SELECT`.
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):

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:
  1. Acepta un topic introducido por el usuario
  2. Genera un vector de embedding para el topic mediante SentenceTransformers con el modelo all-MiniLM-L6-v2
  3. Recupera publicaciones/comentarios muy relevantes mediante búsqueda por similitud vectorial en la tabla hackernews
  4. Usa LangChain y la API de Chat gpt-3.5-turbo de 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.
A continuación se muestra primero un ejemplo de la ejecución de la aplicación de resumen, seguido del código de dicha aplicación. Para ejecutar la aplicación es necesario establecer una API key de OpenAI en la variable de entorno 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.
Código para la aplicación anterior:
Última modificación el 3 de julio de 2026