Este proyecto es un entorno limitado experimental para probar ideas relacionadas con la ejecución de modelos de lenguaje grande (LLM) locales con Ollama para realizar generación aumentada de recuperación (RAG) para responder preguntas basadas en archivos PDF de muestra. En este proyecto, también estamos usando Ollama para crear incrustaciones con nomic-embed-text para usar con Chroma. Tenga en cuenta que las incrustaciones se recargan cada vez que se ejecuta la aplicación, lo cual no es eficiente y solo se hace aquí con fines de prueba.
También hay una interfaz de usuario web creada con Streamlit para proporcionar una forma diferente de interactuar con Ollama.
python3 -m venv .venv
.source .venv/bin/activate
en Unix o MacOS, o ..venvScriptsactivate
en Windows.pip install -r requirements.txt
. Nota: La primera vez que ejecute el proyecto, descargará los modelos necesarios de Ollama para el LLM y las incrustaciones. Este es un proceso de configuración único y puede llevar algún tiempo dependiendo de su conexión a Internet.
python app.py -m -p
para especificar un modelo y la ruta a los documentos. Si no se especifica ningún modelo, el valor predeterminado es mistral. Si no se especifica ninguna ruta, el valor predeterminado será Research
ubicada en el repositorio, a modo de ejemplo.-e
. Si no se especifica, el valor predeterminado es nomic-embed-text. Esto cargará los archivos PDF y Markdown, generará incrustaciones, consultará la colección y responderá la pregunta definida en app.py
ui.py
streamlit run ui.py
en su terminal.Esto iniciará un servidor web local y abrirá una nueva pestaña en su navegador web predeterminado donde podrá interactuar con la aplicación. La interfaz de usuario Streamlit le permite seleccionar modelos y seleccionar una carpeta, lo que proporciona una forma más fácil e intuitiva de interactuar con el sistema de chatbot RAG en comparación con la interfaz de línea de comandos. La aplicación se encargará de cargar documentos, generar incrustaciones, consultar la colección y mostrar los resultados de forma interactiva.