Ai-asistente-lollama
Descripción del proyecto
Este proyecto demuestra cómo usar varios componentes de las bibliotecas langchain_community y langchain_core para cargar, transformar, incrustar y recuperar documentos de una base de datos PostgreSQL con PGVector habilitado. Los documentos se obtienen de las URL, se transforman en texto, se dividen en trozos manejables y se almacenan como vectores en la base de datos para la recuperación. El proyecto también muestra cómo crear una cadena RAG (generación de recuperación de la generación de recuperación) utilizando el modelo de idioma Ollama para responder preguntas basadas en el contexto recuperado de la tienda Vector.
Requisitos previos
- Python 3.7+
- PostgreSQL con PGVector habilitado
- Docker (opcional, para ejecutar PostgreSQL con PGVector)
Instalación
- Clon el repositorio:
git clone https://github.com/Atomic-man007/AI-assistant-ollama.git
- Crear un entorno virtual y activarlo:
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
- Instale los paquetes requeridos:
pip install -r requirements.txt
- Configurar PostgreSQL con PGVector habilitado. Puede usar Docker para girar rápidamente una instancia de PostgreSQL con PGVector:
docker run --name pgvector -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 ankane/pgvector
- Establezca la variable de entorno
DB_URL para apuntar a su instancia de PostgreSQL:
export DB_URL=postgresql://postgres:mysecretpassword@localhost:5432/postgres
Uso
Actualice la lista de urls en la función main con las URL de los documentos que desea procesar.
Ejecute el guión:
Componentes
- Asynchtmlloader : asíncronamente carga el contenido HTML de las URL proporcionadas.
- HTML2TextTransformer : transforma los documentos HTML en texto plano.
- Ollamaembeddings : incrusta los documentos de texto en el espacio vectorial.
- PGVector : una implementación de la tienda vectorial utilizando PostgreSQL con extensión PGVector.
- RecursIvecharacterTextSplitter : divide los documentos de texto en trozos de tamaño especificado.
- ChatPromptTemplate : Crea una plantilla de solicitud de chat para generar respuestas.
- RunnablePassthrough : un paso a través de los componentes de encadenamiento.
- Ollama : un modelo de idioma utilizado para generar respuestas basadas en el contexto recuperado.
Ejemplo
El script demuestra los siguientes pasos:
- Cargar documentos HTML de las URL proporcionadas.
- Transforme los documentos HTML en texto plano.
- Divida los documentos de texto en trozos más pequeños.
- Incruste los fragmentos de texto en el espacio vectorial y guárdelos en la base de datos PostgreSQL.
- Recupere el contexto relevante de la tienda Vector.
- Use el contexto recuperado para generar una respuesta a una pregunta utilizando el modelo de lenguaje Ollama.
Licencia
Este proyecto tiene licencia bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.
Expresiones de gratitud
-
langchain_community y langchain_core bibliotecas para proporcionar los componentes utilizados en este proyecto. - PostgreSQL y PGVector para la implementación de la tienda vectorial.
- Ollama para el modelo de idioma utilizado para generar respuestas.