Apache SeaTunnel, Milvus y OpenAI mejoran la precisión y eficiencia de la búsqueda de similitud de títulos de libros’.

Apache SeaTunnel, Milvus y OpenAI Mejorando la precisión y eficiencia en la búsqueda de títulos de libros similares

Actualmente, las soluciones de búsqueda de libros existentes (como las utilizadas en las bibliotecas públicas) dependen en gran medida de la coincidencia de palabras clave en lugar de comprender semánticamente el contenido real de los títulos de los libros. Como resultado, los resultados de búsqueda pueden no satisfacer nuestras necesidades muy bien o incluso ser muy diferentes a lo que esperamos. Esto se debe a que depender únicamente de la coincidencia de palabras clave no es suficiente, ya que no puede lograr comprensión semántica y, por lo tanto, no puede entender la verdadera intención del buscador.

Entonces, ¿hay una mejor manera de realizar búsquedas de libros de manera más precisa y eficiente? ¡La respuesta es sí! En este artículo, presentaré cómo combinar el uso de Apache SeaTunnel, Milvus y OpenAI para la búsqueda de similitud para lograr una comprensión semántica de todo el título del libro y hacer que los resultados de búsqueda sean más precisos.

El uso de modelos entrenados para representar datos de entrada se llama búsqueda semántica, y este enfoque se puede ampliar a varios casos de uso basados en texto, incluida la detección de anomalías y la búsqueda de documentos. Por lo tanto, la tecnología presentada en este artículo puede proporcionar avances significativos e impactos en el campo de la búsqueda de libros.

A continuación, presentaré brevemente varios conceptos y herramientas/plataformas relacionadas con este artículo para comprender mejor este artículo.

¿Qué es Apache SeaTunnel?

Apache SeaTunnel es una plataforma de gestión y computación de datos distribuida de código abierto y alto rendimiento. Es un proyecto de alto nivel respaldado por la Fundación Apache, capaz de manejar datos masivos, proporcionar consultas y cálculos de datos en tiempo real, y admitir múltiples fuentes y formatos de datos. El objetivo de SeaTunnel es proporcionar una plataforma de gestión e integración de datos escalable a nivel empresarial para satisfacer diversas necesidades de procesamiento de datos a gran escala.

¿Qué es Milvus?

Milvus es un motor de búsqueda de similitud de vectores de código abierto que admite el almacenamiento, la recuperación y la búsqueda de similitud de vectores masivos. Es una solución de alto rendimiento y bajo costo para datos vectoriales a gran escala. Milvus se puede utilizar en diversos escenarios, como sistemas de recomendación, búsqueda de imágenes, recomendación de música, etc.

¿Qué es OpenAI?

ChatGPT es un sistema de IA conversacional basado en el modelo Generative Pre-trained Transformer (GPT) desarrollado por OpenAI. El sistema utiliza principalmente tecnologías de procesamiento de lenguaje natural y aprendizaje profundo para generar texto en lenguaje natural similar a una conversación humana. ChatGPT tiene una amplia gama de aplicaciones, incluido servicio al cliente inteligente, chatbots, asistentes inteligentes e investigación y desarrollo de modelos de lenguaje. En los últimos años, ChatGPT se ha convertido en uno de los puntos de investigación más importantes en el campo del procesamiento de lenguaje natural.

¿Qué es LLM?

Un Modelo de Lenguaje Grande (LLM) es un modelo de procesamiento de lenguaje natural basado en tecnología de aprendizaje profundo que puede analizar y comprender un texto dado y generar contenido de texto relacionado. Los modelos de lenguaje grande suelen utilizar redes neuronales profundas para aprender la gramática y las reglas semánticas del lenguaje natural y convertir los datos de texto en representaciones vectoriales en un espacio vectorial continuo. Durante el entrenamiento, los modelos de lenguaje grande utilizan una gran cantidad de datos de texto para aprender patrones de lenguaje y reglas estadísticas, lo que les permite generar contenido de texto de alta calidad como artículos, noticias y conversaciones. Los modelos de lenguaje grande tienen una amplia gama de aplicaciones, incluida la traducción automática, la generación de texto, los sistemas de preguntas y respuestas, el reconocimiento de voz, etc. Actualmente, muchos marcos de aprendizaje profundo de código abierto proporcionan implementaciones de modelos de lenguaje grande, como TensorFlow, PyTorch, etc.

Tutorial

¡Aquí vamos! Te mostraré cómo combinar Apache SeaTunnel, el API de incrustación de OpenAI, con nuestra base de datos de vectores para realizar una búsqueda semántica en todo el título del libro.

Preparación

Antes del experimento, necesitamos obtener una token de OpenAI desde su sitio web oficial y luego implementar un entorno de experimentación de Milvus. También necesitamos preparar los datos que se utilizarán para este ejemplo. Puedes descargar los datos desde aquí.

Importar datos a Milvus a través de SeaTunnel.

Primero, coloca book.csv en /tmp/milvus_test/book, luego configura la configuración de la tarea como milvus.conf y colócala en la carpeta config. Por favor, consulta la Guía de inicio rápido.

env {  # Puede configurar la configuración del motor aquí  execution.parallelism = 1  job.mode = "BATCH"  checkpoint.interval = 5000  # execution.checkpoint.data-uri = "hdfs://localhost:9000/checkpoint"}

source {  # Este es un complemento de origen de ejemplo **solo para probar y demostrar las características del complemento de origen**  LocalFile {    schema {      fields {        bookID = string        title_1 = string        title_2 = string      }    }    path = "/tmp/milvus_test/book"    file_format_type = "csv"  }}transform {}sink {  Milvus {    milvus_host = localhost    milvus_port = 19530    username = root    password = Milvus    collection_name = title_db    openai_engine = text-embedding-ada-002    openai_api_key = sk-xxxx    embeddings_fields = title_2  }}

Ejecuta el siguiente comando:

./bin/SeaTunnel.sh --config ./config/milvus.conf -e local

Observando los datos en la base de datos, puedes ver que los datos se han escrito en ella.

Luego, utiliza el siguiente código para realizar una búsqueda semántica en los títulos de los libros:

import json
import random
import openai
import time
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility

COLLECTION_NAME = 'title_db'  # Nombre de la colección
DIMENSION = 1536  # Tamaño de los embeddings
COUNT = 100  # Cuántos títulos embedados e insertados
MILVUS_HOST = 'localhost'  # Dirección del servidor Milvus
MILVUS_PORT = '19530'  # Puerto de Milvus
OPENAI_ENGINE = 'text-embedding-ada-002'  # Qué motor utilizar de Open AI
openai.api_key = 'sk-******'  # Utiliza tu propia clave de API de Open AI aquí

connections.connect(host=MILVUS_HOST, port=MILVUS_PORT)
collection = Collection(name=COLLECTION_NAME)
collection.load()

def embed(text):
    return openai.Embedding.create(
        input=text,
        engine=OPENAI_ENGINE)["data"][0]["embedding"]

def search(text):
    # Parámetros de búsqueda para el índice
    search_params={
        "metric_type": "L2"
    }
    results=collection.search(
        data=[embed(text)],  # Valor de búsqueda incrustado
        anns_field="title_2",  # Buscar a través de los embeddings
        param=search_params,
        limit=5,  # Limitar a cinco resultados por búsqueda
        output_fields=['title_1']  # Incluir campo de título en el resultado
    )
    ret=[]
    for hit in results[0]:
        row=[]
        row.extend([hit.id, hit.score, hit.entity.get('title_1')])  # Obtener el id, distancia y título de los resultados
        ret.append(row)
    return ret

search_terms=['self-improvement', 'landscape']
for x in search_terms:
    print('Término de búsqueda:', x)
    for result in search(x):
        print(result)
    print()

Aquí está el resultado:

Término de búsqueda: self-improvement
[96, 0.4079835116863251, "The Dance of Intimacy: A Woman's Guide to Courageous Acts of Change in Key Relationships"]
[56, 0.41880303621292114, 'Nicomachean Ethics']
[76, 0.4309804439544678, 'Possession']
[19, 0.43588975071907043, 'Vanity Fair']
[7, 0.4423919916152954, 'Knowledge Is Power (The Amazing Days of Abby Hayes: #15)']

Término de búsqueda: landscape
[9, 0.3023473024368286, 'The Lay of the Land']
[1, 0.3906732499599457, 'The Angry Hills']
[78, 0.392495334148407, 'Cloud Atlas']
[95, 0.39346450567245483, 'Alien']
[94, 0.399422287940979, 'The Known World']

Si utilizamos el antiguo método de búsqueda por palabras clave, los títulos de los libros deben contener palabras clave como “self-improvement” e “improvement”. Sin embargo, al utilizar modelos de lenguaje grandes para comprensión semántica, podemos recuperar títulos de libros que son más relevantes para nuestras necesidades. Por ejemplo, en el ejemplo anterior, cuando buscamos la palabra clave “self-improvement”, los títulos de los libros mostrados como “The Dance of Intimacy: A Woman’s Guide to Courageous Acts of Change in Key Relationships” y “Nicomachean Ethics” no contenían palabras clave relevantes, pero eran claramente más relevantes para nuestras necesidades.

Por lo tanto, al utilizar Apache SeaTunnel, Milvus y OpenAI, podemos lograr búsquedas de similitud de títulos de libros más precisas a través de modelos de lenguaje grandes, lo que supone un importante avance tecnológico en el campo de la búsqueda de libros y también proporciona valiosas referencias para la comprensión semántica. Espero que esto pueda inspirar a todos.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Investigadores de UCL y Google proponen AudioSlots un modelo generativo centrado en slots para la separación de fuentes ciegas en el dominio de audio.

El uso de redes neuronales en arquitecturas que operan en datos estructurados en conjuntos y aprenden a mapear desde ...

Inteligencia Artificial

Crear resúmenes de grabaciones utilizando IA generativa con Amazon Bedrock y Amazon Transcribe

Las notas de reuniones son una parte crucial de la colaboración, pero a menudo se pierden entre las grietas. Entre li...

Inteligencia Artificial

Una Nueva Forma de Ver la Privacidad de los Datos

Una nueva métrica permite agregar una pequeña cantidad de ruido a los modelos para proteger los datos sensibles mient...

Inteligencia Artificial

Minimiza la latencia de inferencia en tiempo real utilizando las estrategias de enrutamiento de Amazon SageMaker

Amazon SageMaker facilita la implementación de modelos de aprendizaje automático (ML) para inferencia en tiempo real ...

Noticias de Inteligencia Artificial

'AI Doctor' predice la readmisión en hospitales y otros resultados de salud.

Los investigadores inventaron un algoritmo de inteligencia artificial para predecir los resultados de salud de los pa...