Un simple bot de discordia que le permite buscar mensajes semánticamente.
Solo comencé este proyecto porque quería aprender sobre incrustaciones de palabras y bases de datos vectoriales, así que no estoy seguro de si alguna vez lo terminaré. Si quieres usarlo, tendrás que descubrir cómo alojarlo tú mismo.
Claramente, esto sigue siendo un trabajo en progreso. Todavía necesita mucho trabajo, especialmente en el lado de la base de datos. Las bases de datos vectoriales son relativamente fáciles de usar, pero difíciles de mantener.
Además, la razón por la que lo enmarqué como un bot de discordia es porque, por mucho que me encanta la plataforma, su funcionalidad de búsqueda no es tan buena. No estoy seguro de si alguna vez llegaré a un punto en el que pueda alojar este bot para que otros lo usen, pero si lo hago, actualizaré esta sección.
Una última cosa, no estoy seguro de si estoy usando las abstracciones/estructura correctas, ya que no tengo mucha experiencia con TypeScript. Sin embargo, traté de aprovechar una abstracción para facilitar la intercambio de la base de datos y el servicio de incrustación. Si tiene alguna sugerencia, hágamelo saber.
Su objetivo principal es ayudarlo a encontrar mensajes que sepa que están en un servidor (o no), pero no puede recordar exactamente cómo fueron redactados. Utiliza el modelo ADA de OpenAI para generar incrustaciones para cada mensaje y almacenarlos en una base de datos vectorial (QDRANT).
Luego puede buscar mensajes que sean semánticamente similares a una consulta dada.
Debe crear un bot de discordia y agregarlo a su servidor.
También debe crear una cuenta de OpenAI y obtener una clave API.
cp .env.template .env # And fill in the missing valuesSuponiendo que tenga instalado Node y Docker, puede ejecutar los siguientes comandos para iniciar el BOT en modo de desarrollo:
npm install
npm run commands:deploy # Deploys bot commands to your dev server (you need to do this every time you add a new command)
bash start-db.sh # Starts a docker container with a vector database
npm run start:dev