ChatGPT+ Base de datos vectorial + prompt-as-code - La pila CVP
Me emociona compartir una aplicación de demostración en la que hemos estado trabajando aquí en Zilliz. La llamamos OSS Chat, un chatbot que puedes usar para obtener conocimientos técnicos sobre tus proyectos de código abierto favoritos. Esta versión inaugural solo es compatible con Hugging Face, Pytorch y Milvus, pero planeamos ampliarla a varios de tus proyectos de código abierto favoritos. ¡Creamos OSS Chat usando ChatGPT de OpenAI y una base de datos vectorial, Zilliz! Lo ofrecemos como un servicio gratuito para cualquiera que lo use. Si quieres que tu proyecto de código abierto aparezca en la lista, háznoslo saber.
Antecedentes sobre por qué creamos OSS Chat
ChatGPT tiene limitaciones debido a su base de conocimientos limitada, lo que a veces da lugar a respuestas alucinadas cuando se le pregunta sobre temas desconocidos. Estamos presentando la nueva pila de IA, ChatGPT+base de datos vectorial+prompt-as-code, o la pila CVP, para superar esta limitación.
ChatGPT es excepcionalmente bueno respondiendo consultas en lenguaje natural. Cuando se combina con un prompt que vincula la consulta del usuario y el texto recuperado, ChatGPT genera una respuesta relevante y precisa. Este enfoque puede evitar que ChatGPT proporcione "respuestas alucinadas."
Hemos creado OSS Chat como una demostración funcional de la pila CVP. OSS Chat aprovecha varios repositorios de GitHub de proyectos de código abierto y sus páginas de documentación asociadas como fuente de verdad. Convertimos estos datos en embeddings y almacenamos los embeddings en Zilliz y el contenido relacionado en un almacén de datos separado. Cuando el usuario interactúa con OSS Chat haciendo preguntas sobre cualquier proyecto de código abierto, activamos una búsqueda de similitud en Zilliz para encontrar una coincidencia relevante. Los datos recuperados se introducen en ChatGPT para generar una respuesta precisa y exacta.
OSS Chat Architecture
Alucinar la respuesta
Quiero mostrarte algunos ejemplos de preguntas y respuestas usando ChatGPT y OSS Chat para demostrar cómo puedes eliminar algunas respuestas incorrectas.
Q1 ¿Hugging Face es compatible con OpenAI Whisper?
Cuando le hicimos esta pregunta a ChatGPT, admitió su limitación y nos dio una respuesta precisa (no tenía los datos), lo cual no fue útil.
Según mi fecha límite de conocimiento de septiembre de 2021, Hugging Face no ha anunciado compatibilidad con OpenAI Whisper. Sin embargo, siempre es posible que la agreguen en el futuro. OpenAI Whisper es un nuevo modelo de lenguaje de OpenAI, y puede llevar algún tiempo que otras empresas y desarrolladores lo integren en sus plataformas y productos.
Con OSS Chat, como estamos extrayendo información del sitio de documentación de Huggingface, podemos obtener una respuesta precisa. Sí, Hugging Face es compatible con OpenAI Whisper. La clase FlaxWhisperModel está disponible en la biblioteca transformers, que es un envoltorio alrededor del modelo OpenAI Whisper. Puedes usar esta clase para cargar el modelo OpenAI Whisper preentrenado y usarlo para diversas tareas de procesamiento del lenguaje natural, como clasificación de texto, respuesta a preguntas y generación de texto.
Q2 ¿Qué hace la API torch.compile?
Le hicimos a ChatGPT una pregunta sobre una API de PyTorch y obtuvimos una respuesta larga sobre qué es (lo cual no preguntamos) y una respuesta que afirmaba que PyTorch no tiene una API torch.compile.
Según mi fecha límite de conocimiento de septiembre de 2021, no existe una API torch.compile en PyTorch, que es una popular biblioteca de aprendizaje automático de código abierto desarrollada por Facebook AI Research.
Sin embargo, PyTorch proporciona varias API relacionadas con la compilación y optimización de modelos de redes neuronales, como torch.nn.Module, que es una clase base para todos los módulos de redes neuronales en PyTorch. torch.nn.Module proporciona varios métodos y hooks para definir y optimizar modelos de redes neuronales.
Además, PyTorch proporciona una interfaz para integrarse con compiladores Just-In-Time (JIT), como el compilador JIT de TorchScript, que puede usarse para optimizar y compilar modelos de PyTorch para una ejecución eficiente en diversas plataformas de hardware. El compilador JIT puede usarse para convertir modelos de PyTorch en una representación serializada e independiente que puede cargarse y ejecutarse en otros entornos o lenguajes. En resumen, aunque PyTorch no tiene una API torch.compile, proporciona varias API y herramientas para optimizar y compilar modelos de redes neuronales.
Esto es lo que OSSChat nos dijo:
El propósito de la API torch.compile es acelerar el código de PyTorch compilándolo por adelantado. Puede manejar código Python arbitrario con cambios mínimos en el código existente y puede manejar el flujo de control dependiente de los datos. También es capaz de manejar llamadas a funciones que no son de PyTorch, que el rastreo de TorchScript trata como constantes y pueden dar lugar a resultados incorrectos.
Q3 Qué es TTL en Milvus y cómo lo configuro
Para esta pregunta final, preguntamos a ChatGPT, y nos proporcionó una respuesta razonable (¡incluso tenía fragmentos de código!), pero no era una respuesta a la pregunta. En cambio, era una de esas "alucinaciones" en las que debió haber compilado la respuesta.
En Milvus, TTL (Time To Live) es una función que te permite establecer un tiempo de expiración para tus datos. Cuando estableces un TTL para una colección o partición en Milvus, Milvus eliminará automáticamente cualquier dato que haya superado el TTL especificado. Para establecer TTL para una colección o partición en Milvus, puedes usar la API set_collection_ttl o set_partition_ttl respectivamente. Aquí tienes un ejemplo:
pythonCopy code
import datetime
from milvus import Milvus, DataType
milvus = Milvus()
# create a collection
collection_param = {
'collection_name': 'my_collection',
'dimension': 128,
'index_file_size': 1024,
'metric_type': DataType.FLOAT_VECTOR,
}
milvus.create_collection(collection_param)
# set TTL for the collection
now = datetime.datetime.now()
delta = datetime.timedelta(days=7) # TTL of 7 days
expiry_time = now + delta
milvus.set_collection_ttl('my_collection', expiry_time.timestamp())
# create a partition
partition_param = {
'collection_name': 'my_collection',
'partition_name': 'my_partition',
}
milvus.create_partition(partition_param)
# set TTL for the partition
milvus.set_partition_ttl('my_collection', 'my_partition', expiry_time.timestamp())
En este ejemplo, creamos una colección y una partición en Milvus. Luego establecemos un TTL de 7 días tanto para la colección como para la partición usando las API set_collection_ttl y set_partition_ttl respectivamente. El TTL se especifica como una marca de tiempo Unix, que es el número de segundos desde el 1 de enero de 1970. Calculamos el tiempo de expiración sumando el TTL a la hora actual usando el módulo datetime.
Ten en cuenta que necesitas habilitar la función TTL cuando inicias Milvus. Esto se puede hacer estableciendo el parámetro TTL_CHECK_INTERVAL en el archivo de configuración de Milvus. El valor predeterminado es 60 segundos.
OSSchat, por otro lado, nos dio la respuesta correcta: una sola línea de código para establecer los segundos deseados en la propiedad de configuración de la colección.
TTL significa "Time to Live" en Milvus. Es una función que te permite establecer un tiempo de expiración para los datos en una colección. Cuando los datos en una colección expiran, se limpiarán automáticamente y no se incluirán en búsquedas ni consultas.
Para establecer el valor de TTL para una colección en Milvus, puedes usar el método collection.set_properties() en Python. Por ejemplo, para establecer el valor de TTL en 1800 segundos (30 minutos), puedes usar el siguiente código:
collection.set_properties(properties={"collection.ttl.seconds": 1800})
También puedes establecer el valor de TTL al crear una colección especificando la propiedad collection.ttl.seconds en las propiedades de la colección. El valor debe especificarse en segundos y debe ser 0 o mayor. Un valor de 0 significa que TTL está deshabilitado.
Empieza ahora
En los próximos días, añadiremos más funcionalidades a OSS Chat y escribiremos blogs complementarios para que sepas cómo lo construimos. Mientras tanto, prueba a jugar con OSS Chat y cuéntanos qué capacidades te gustaría ver, o si tienes un proyecto de código abierto para añadir, háznoslo saber también!
Sigue leyendo

Zilliz Cloud Audit Logs Goes GA: Security, Compliance, and Transparency at Scale
Zilliz Cloud Audit Logs are now GA, giving enterprises real-time visibility, compliance-ready trails, and stronger security across AWS, GCP, and Azure.

Zilliz Cloud Introduces Advanced BYOC-I Solution for Ultimate Enterprise Data Sovereignty
Explore Zilliz Cloud BYOC-I, the solution that balances AI innovation with data control, enabling secure deployments in finance, healthcare, and education sectors.

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.



