Ingeniería de una persona en la que apoyarse en el historial de chat

Pregunta rápida: ¿cuál sería una estructura “mejor” para nuestro caso de uso?

Tenemos un montón de registros de historial de chat exportados de Canales de Slack que contienen mucho conocimiento, problemas y soluciones mencionados, etc. Obviamente, esos chats contienen mucha “paja” inútil que sería antieconómico simplemente volcar en temas/publicaciones y que el bot de IA utilice.

Tenemos aproximadamente 10 archivos, cada uno de aproximadamente 1-2 MB de tamaño. En términos de uso de la personalidad de IA, solo habrá unas 30 personas realizando aproximadamente 10 chats por día (difícil estimar el volumen de tokens aquí).

En este punto, me pregunto cuál sería un enfoque razonable del 80/20 para utilizar esos registros de chat mientras se mantiene algo económico. Se redujo a 2 opciones:

  1. Copiar y pegar los registros en temas/publicaciones de Discourse: Rápido y sucio, no requiere desarrollo personalizado, podría resultar en un alto costo de API.
  2. Preprocesar de alguna manera los registros de chat y ponerlos en un formato o estructura adecuada y cargarlos en la personalidad.
  3. ¿O tal vez alguna forma híbrida: con cada solicitud del bot de IA, evaluar y guardar la salida como un archivo txt y luego cargarlo en la personalidad?

¿Qué opción recomiendan? ¿O tal vez algo completamente diferente?

1 me gusta

Recomendaría el siguiente enfoque:

  1. Procesar los 10 archivos utilizando una persona “Creativa” con un LLM de contexto grande / salida grande como Sonnet 4 thinking. El objetivo de este procesamiento sería “ordenar” la información y prepararla para un RAG.
  2. Luego, utilizando nuestra carga integrada, cargar los 10 archivos procesados a una persona, para que RAG pueda buscar a través del contenido.

Dado que hay muchísimos datos aquí, recomiendo no sobrecargar un prompt del sistema. Como guía, un prompt del sistema no debe ser muy largo, ya que se vuelve costoso. 10k tokens es manejable, 100k tokens no es manejable con los LLM de vanguardia actuales. Cada interacción te costará demasiado y los LLM se confundirán aún más.

4 Me gusta

¡Gracias, eso ayuda!

Solo para aclarar, ¿se inyectan todos los archivos subidos en el prompt del sistema? ¿O se procesan primero a través del ai_embeddings_model configurado y luego se inyectan?

Estoy un poco confundido acerca de su recomendación de límite de 10k tokens, especialmente con la parte de abajo:

Los archivos en Discourse AI Persona, upload support solo están limitados por el tamaño de tu carga, pueden ser enormes, se procesan a través de incrustaciones, inyectamos fragmentos en el prompt por configuración.

De lo que estaba hablando era de intentar forzar toda la información en un único prompt del sistema aquí:

eso está limitado…

1 me gusta

¡Ah, eso lo aclara, gracias!

Así que, básicamente, mis próximos pasos deberían ser ejecutar algunas pruebas con diferentes modelos de embeddings y ver qué tamaño de token termino inyectando en el prompt del sistema, ¿verdad?

El modelo de incrustación controla la calidad, no la cantidad
Puede agrupar todos sus datos en un solo archivo, lo dividiremos en segundo plano y recuperaremos los fragmentos más relevantes y los agregaremos a su prompt
experimentar aquí sería mejorar los resultados, algunas limpiezas pueden funcionar mejor que otras limpiezas, algunos modelos de incrustación serán más inteligentes para encontrar piezas más relevantes

2 Me gusta

Gracias Sam, lo aprecio mucho :heart:

Si tienes más recursos útiles, no dudes en compartirlos aquí. Una vez que progrese, intentaré publicar mi experiencia aquí en meta. :slight_smile:

2 Me gusta

@sam ¿cómo sugieres agregar números de versión o modelo a los separadores de metadatos?

Tu ejemplo original:

[[metadatos sobre gatos]]
una larga historia sobre gatos
[[metadatos sobre perros]]
una larga historia sobre perros

Ahora, si queremos enriquecerlos con números de versión o números de modelo específicos, ¿simplemente uso el mismo formato o estructura que usarían los humanos al escribirlos?

Por ejemplo:

[[metadatos sobre gatos v1.0]]
una larga historia sobre gatos
[[metadatos sobre perros]]
una larga historia sobre perros
[[metadatos sobre gatos xxl v2.1]]
una larga historia sobre gatos
[[metadatos sobre perros v 1.1beta]]
una larga historia sobre perros

Además, cuando faltan números de versión en los metadatos (ver metadatos sobre perros), ¿se utilizaría ese fragmento en una respuesta para todas las solicitudes relacionadas con perros, sin importar qué “versión de perro”?

¡Sí, esta es la manera de hacerlo!

2 Me gusta