Skip to content
/ rag Public

Python-based Retrieval-Augmented Generation (RAG) microservice that ingests provided documents, answers queries using an LLM, and includes full observability via Langufuse

Notifications You must be signed in to change notification settings

ancaneo/rag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RAG

Aplicación Python de Recuperación de Generación Aumentada (RAG por sus sigla en inglés: Retrieval-Augmented Generation) que permite inyectar datos de documentos y responder preguntas usando LLM (Gemini) y visibilidad mediante Langsmith.

Este proyecto trabaja con PostgreVector y modelos de chat de Google Gemini como Open AI y Antrophic, por defecto con modelos de Gemini.

Claves secretas

Las siguientes claves debe inyectar en .env. Es fundamental ingresar estas claves antes de la ejecución del proyecto.

Otras variables de entorno:

  • LANGSMITH_TRACING: Booleano (True o False) para indicar si se realiza rastreo de las llamadas a LLM.
  • USER_AGENT: User agent que se desea usar para las llamadas web desde el LLM.
  • CHAT_MODEL [Opcional]: Modelo para entablar la conversación que busca responder a la pregunta del usuario. Por defecto es google_genai:gemini-2.5-flash-lite.
  • EMBEDDINGS_PROVIDER [Opcional: gemini | open_ai]: Plataforma que provee el modelo para hacer los embeddings. Por defecto es gemini.
  • EMBEDDINGS_MODEL [Opcional]: Model para hacer los embeddings. Por defecto es models/gemini-embedding-001.

Microservicios

El proyecto cuenta con 2 microservicios:

  • db: Instancia una base de datos PostgreSQL con PGVector para el almenamiento de vectores.
  • api: Instancia una api de FastAPI para responder a las llamadas de inyección de nueva información de documentos PDF, HTML, MDy TXT como de páginas web; y responder a preguntas de aquella información.

Ambos servicios se levantan ejecutando con docker compose, que en v2:

  • docker compose build api: Para crear la imagen de api. db no necesita creación de imagen ya que usa capa definida por pgvector.
  • docker compose create [servicio: api y/o db]: Para crear la instancia del microservicio.
  • docker compose start [servicio: api y/o db]: En cuanto api depende de db, si se levanta api, db se levantará automáticamente si no está corriendo ya.

O bien si se prefiere puede usar el comando docker compose up que crea imagen, construye e inicia containers y volúmenes.

Para detener un servicio:

  • docker compose stop [servicio: api y/o db]

O bien use docker compose down si se quiere remover instancia, imágenes y volúmenes al momento de detener servicio.

La API es accesible en http://localhost:8080/docs

Tests:

Para ejecutar tests: docker compose exec api pytest Si se desea correr un test en particular: docker compose exec api pytest tests/test_rag.py::[nombre_test]

About

Python-based Retrieval-Augmented Generation (RAG) microservice that ingests provided documents, answers queries using an LLM, and includes full observability via Langufuse

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published