Skip to content

marcobaturan/GRAG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 Local Document Chat (GRAG)

This project allows you to chat with your local documents using generative AI models. It uses a graph-based approach to represent documents and retrieve relevant information efficiently.

✨ Main Features

  • 📊 Persistent Graphs: Processed documents are saved as reusable graphs
  • 🔄 Automatic Detection: Automatically detects existing graphs when starting the application
  • 📁 Smart Selector: Dropdown to choose from already processed documents
  • 🏷️ Tabbed Interface: Clear organization between loading existing graphs and uploading new documents
  • 💬 Intelligent Chat: Fluid conversation with your documents using optimized prompts
  • 🤖 Multiple LLMs: Support for Ollama (local) and OpenAI (API)

🛠️ Initial Setup

1. Create and Activate Virtual Environment

# Create virtual environment
python -m venv venv

# Activate on Windows
.\venv\Scripts\Activate.ps1

# Activate on Linux/Mac
source venv/bin/activate

2. Install Dependencies

pip install -r requirements.txt

3. Install Ollama (Optional for local use)

Follow the instructions on the Ollama website to install and run Ollama on your local machine. Make sure to download the model you want to use, for example:

ollama pull tinyllama
# or
ollama pull mistral

🚀 How to Use the Application

Step 1: Run the Application

streamlit run app.py

Step 2: Open in Browser

The application will open automatically at http://localhost:8501

Step 3: Configure the LLM

In the sidebar:

  • Choose LLM: Ollama (local) or OpenAI (API)
  • Configure model: Model name (e.g.: tinyllama, mistral, gpt-4)
  • API Key (OpenAI only): Enter your OpenAI API key

📋 Workflow

🆕 First Time (No Existing Graphs)

  1. Upload Document: Use the file uploader to upload your document
  2. Automatic Processing: The application will create and save a document graph
  3. Chat Activated: You can start asking questions immediately

🔄 Later Uses (With Existing Graphs)

  1. Tab Selection:

    • 📁 Load Existing Graph: To use already processed documents
    • 📄 Upload New Document: To process additional documents
  2. Load Existing Graph:

    • Select a document from the dropdown
    • Click "🚀 Load Graph"
    • Start chatting immediately!
  3. Upload New Document:

    • Use the file uploader
    • The system will process and save the new graph
    • Chat will activate automatically

💬 Chat Interface

Once you have a graph loaded:

  1. Write your question in the text field
  2. Click "Get Answer"
  3. Receive intelligent responses based on document content
  4. Continue the conversation with additional questions

📎 Supported File Types

  • 📄 TXT - Plain text files
  • 📕 PDF - PDF documents
  • 📊 CSV - Comma-separated data files
  • 📘 DOCX - Microsoft Word documents
  • 📈 XLSX - Excel spreadsheets
  • 🌐 HTML - Web pages and HTML documents

🤖 Supported AI Models

Ollama (Recommended for Local Use)

  • Privacy: Everything runs on your local machine
  • No Costs: Doesn't require API keys or subscriptions
  • Popular Models: tinyllama, mistral, llama2, codellama
  • Installation: Requires Ollama installation

OpenAI (For Maximum Performance)

  • 🚀 Advanced Models: GPT-4, GPT-3.5-turbo, GPT-4o
  • Fast Responses: Cloud processing
  • 💳 Requires API Key: Needs OpenAI account
  • 💰 Pay per Use: Charged by tokens used

📁 Graph Management

Generated Files

  • Graphs are saved as .graph files in the project directory
  • Format: document_name.extension.graph
  • Example: my_document.pdf.graph

Persistence Advantages

  • Instant Loading: No need to reprocess documents
  • 💾 Resource Saving: Avoids unnecessary computation
  • 📚 Document Library: Maintain a collection of processed documents
  • 🔄 Reusability: Access any previously processed document

🔧 Technical Architecture

  • Frontend: Streamlit with interactive interface
  • Processing: LangChain for document handling
  • Graphs: NetworkX for knowledge representation
  • Embeddings: Ollama Embeddings for semantic search
  • Persistence: Pickle for graph storage
  • LLMs: Integration with Ollama and OpenAI

🚀 Quick Commands

# Complete setup from scratch
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
streamlit run app.py

# Just run (if already configured)
.\venv\Scripts\Activate.ps1
streamlit run app.py

🎯 Ideal Use Cases

  • 📚 Academic Research: Analyze papers and scientific documents
  • 💼 Business Documentation: Consult manuals and procedures
  • 📖 Book Analysis: Explore extensive book content
  • 📊 Data Analysis: Interpret reports and datasets
  • 🗞️ News Summarization: Extract information from articles
  • 📋 Legal Documents: Consult contracts and regulations

⚡ Usage Tips

  • 🎯 Specific Questions: Ask concrete questions for better answers
  • 🔄 Reuse Graphs: Large documents are processed only once
  • 🏷️ Descriptive Names: Use clear names for your files
  • 💾 Space Management: .graph files take up disk space
  • 🤖 Experiment with Models: Try different models according to your needs

🤖 Chat con Documentos Locales (GRAG)

Este proyecto te permite chatear con tus documentos locales usando modelos de inteligencia artificial generativa. Utiliza un enfoque basado en grafos para representar documentos y recuperar información relevante de manera eficiente.

✨ Características Principales

  • 📊 Grafos Persistentes: Los documentos procesados se guardan como grafos reutilizables
  • 🔄 Detección Automática: Detecta automáticamente grafos existentes al iniciar la aplicación
  • 📁 Selector Inteligente: Desplegable para elegir entre documentos ya procesados
  • 🏷️ Interfaz por Pestañas: Organización clara entre cargar grafos existentes y subir nuevos documentos
  • 💬 Chat Inteligente: Conversación fluida con tus documentos usando prompts optimizados
  • 🤖 Múltiples LLMs: Soporte para Ollama (local) y OpenAI (API)

🛠️ Configuración Inicial

1. Crear y Activar Entorno Virtual

# Crear entorno virtual
python -m venv venv

# Activar en Windows
.\venv\Scripts\Activate.ps1

# Activar en Linux/Mac
source venv/bin/activate

2. Instalar Dependencias

pip install -r requirements.txt

3. Instalar Ollama (Opcional para uso local)

Sigue las instrucciones en el sitio web de Ollama para instalar y ejecutar Ollama en tu máquina local. Asegúrate de descargar el modelo que quieras usar, por ejemplo:

ollama pull tinyllama
# o
ollama pull mistral

🚀 Cómo Usar la Aplicación

Paso 1: Ejecutar la Aplicación

streamlit run app.py

Paso 2: Abrir en el Navegador

La aplicación se abrirá automáticamente en http://localhost:8501

Paso 3: Configurar el LLM

En la barra lateral:

  • Elige el LLM: Ollama (local) o OpenAI (API)
  • Configura el modelo: Nombre del modelo (ej: tinyllama, mistral, gpt-4)
  • API Key (solo para OpenAI): Ingresa tu clave API de OpenAI

📋 Flujo de Trabajo

🆕 Primera vez (Sin Grafos Existentes)

  1. Subir Documento: Usa el cargador de archivos para subir tu documento
  2. Procesamiento Automático: La aplicación creará y guardará un grafo del documento
  3. Chat Activado: Podrás comenzar a hacer preguntas inmediatamente

🔄 Usos Posteriores (Con Grafos Existentes)

  1. Selección por Pestañas:

    • 📁 Cargar Grafo Existente: Para usar documentos ya procesados
    • 📄 Subir Nuevo Documento: Para procesar documentos adicionales
  2. Cargar Grafo Existente:

    • Selecciona un documento del desplegable
    • Haz clic en "🚀 Cargar Grafo"
    • ¡Comienza a chatear inmediatamente!
  3. Subir Nuevo Documento:

    • Usa el cargador de archivos
    • El sistema procesará y guardará el nuevo grafo
    • Se activará automáticamente el chat

💬 Interfaz de Chat

Una vez que tengas un grafo cargado:

  1. Escribe tu pregunta en el campo de texto
  2. Haz clic en "Obtener Respuesta"
  3. Recibe respuestas inteligentes basadas en el contenido del documento
  4. Continúa la conversación con preguntas adicionales

📎 Tipos de Archivos Soportados

  • 📄 TXT - Archivos de texto plano
  • 📕 PDF - Documentos PDF
  • 📊 CSV - Archivos de datos separados por comas
  • 📘 DOCX - Documentos de Microsoft Word
  • 📈 XLSX - Hojas de cálculo de Excel
  • 🌐 HTML - Páginas web y documentos HTML

🤖 Modelos de IA Soportados

Ollama (Recomendado para Uso Local)

  • Privacidad: Todo funciona en tu máquina local
  • Sin Costos: No requiere API keys ni suscripciones
  • Modelos Populares: tinyllama, mistral, llama2, codellama
  • Instalación: Requiere instalación de Ollama

OpenAI (Para Máximo Rendimiento)

  • 🚀 Modelos Avanzados: GPT-4, GPT-3.5-turbo, GPT-4o
  • Respuestas Rápidas: Procesamiento en la nube
  • 💳 Requiere API Key: Necesita cuenta de OpenAI
  • 💰 Costo por Uso: Se cobra por tokens utilizados

📁 Gestión de Grafos

Archivos Generados

  • Los grafos se guardan como archivos .graph en el directorio del proyecto
  • Formato: nombre_documento.extension.graph
  • Ejemplo: mi_documento.pdf.graph

Ventajas de la Persistencia

  • Carga Instantánea: No necesitas reprocesar documentos
  • 💾 Ahorro de Recursos: Evita computación innecesaria
  • 📚 Biblioteca de Documentos: Mantén una colección de documentos procesados
  • 🔄 Reutilización: Accede a cualquier documento procesado anteriormente

🔧 Arquitectura Técnica

  • Frontend: Streamlit con interfaz interactiva
  • Procesamiento: LangChain para manejo de documentos
  • Grafos: NetworkX para representación de conocimiento
  • Embeddings: Ollama Embeddings para búsqueda semántica
  • Persistencia: Pickle para almacenamiento de grafos
  • LLMs: Integración con Ollama y OpenAI

🚀 Comandos Rápidos

# Configuración completa desde cero
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
streamlit run app.py

# Solo ejecutar (si ya está configurado)
.\venv\Scripts\Activate.ps1
streamlit run app.py

🎯 Casos de Uso Ideales

  • 📚 Investigación Académica: Analizar papers y documentos científicos
  • 💼 Documentación Empresarial: Consultar manuales y procedimientos
  • 📖 Análisis de Libros: Explorar contenido de libros extensos
  • 📊 Análisis de Datos: Interpretar reportes y datasets
  • 🗞️ Resumen de Noticias: Extraer información de artículos
  • 📋 Documentos Legales: Consultar contratos y regulaciones

⚡ Consejos de Uso

  • 🎯 Preguntas Específicas: Haz preguntas concretas para mejores respuestas
  • 🔄 Reutiliza Grafos: Los documentos grandes se procesan una sola vez
  • 🏷️ Nombres Descriptivos: Usa nombres claros para tus archivos
  • 💾 Gestión de Espacio: Los archivos .graph ocupan espacio en disco
  • 🤖 Experimenta con Modelos: Prueba diferentes modelos según tus necesidades

¡Disfruta chateando con tus documentos de manera inteligente! 🎉 | Enjoy chatting with your documents intelligently! 🎉

Fuentes / Sources

About

GRAG - Graph Retrieval Augmented Generation system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors