Aplicaciones RAG nativas con DeepSeek R1 y Ollama
Tutoriales prácticos sobre IAPublicado hace 5 meses Círculo de intercambio de inteligencia artificial 1.4K 00
breve
Este documento detalla cómo utilizar el DeepSeek R1 y Ollama construir aplicaciones RAG (Retrieval Augmented Generation) localizadas. También es una buena forma de sacar el máximo partido a la Creación de una aplicación RAG local con LangChain El suplemento.
Demostraremos el proceso de implementación completo a través de ejemplos, incluido el procesamiento de documentos, el almacenamiento de vectores, la llamada a modelos y otros pasos clave. Este tutorial utiliza DeepSeek-R1 1.5B como modelo lingüístico de base. Teniendo en cuenta que los distintos modelos tienen sus propias características y prestaciones, los lectores pueden elegir otros modelos adecuados para su aplicación en función de las necesidades reales de la RAG Sistema.
Nota: Este documento contiene fragmentos de código básico y explicaciones detalladas. El código completo se encuentra en cuaderno .
preparación preliminar
En primer lugar, tenemos que descargar Ollama y configurar el entorno.
El repositorio GitHub de Ollama ofrece una descripción detallada, que se resume brevemente a continuación.
Paso1, descarga Ollama.
descargando y haga doble clic para ejecutar la aplicación Ollama.

Paso 2, verifique la instalación.
En la línea de comandos, escriba ollama
Si aparece el siguiente mensaje, Ollama se ha instalado correctamente.

Paso3, tirar del modelo.
- Desde la línea de comandos, consulte Lista de modelos de Ollama responder cantando Lista de modelos de incrustación de texto Sacar el modelo. En ese tutorial, tomamos el
deepseek-r1:1.5b
responder cantandonomic-embed-text
Ejemplo.- entrada de línea de comandos
ollama pull deepseek-r1:1.5b
Modelos lingüísticos genéricos de código abiertodeepseek-r1:1.5b
; (Puede ser lento al tirar de los modelos. Si se produce un error de extracción, puede volver a introducir el comando para extraer). - entrada de línea de comandos
ollama pull nomic-embed-text
tire de Modelo de incrustación de textonomic-embed-text
.
- entrada de línea de comandos
- Cuando la aplicación se esté ejecutando, todos los modelos estarán automáticamente en la carpeta
localhost:11434
En la salida. - Tenga en cuenta que la selección del modelo debe tener en cuenta las capacidades de su hardware local, el tamaño de la memoria de vídeo de referencia para este tutorial
CPU Memory > 8GB
.
Paso 4, despliegue del modelo.
La ventana de línea de comandos ejecuta el siguiente comando para desplegar el modelo.
ollama run deepseek-r1:1.5b

También es posible ejecutar el modelo de implantación directamente desde la línea de comandos, por ejemplo
ollama run deepseek-r1:1.5b
.

Tenga en cuenta que los siguientes pasos no son necesarios si sólo desea desplegar modelos DeepSeek R1 utilizando Ollama.
Paso 5, instalar las dependencias.
# langchain_community
pip install langchain langchain_community
# Chroma
pip install langchain_chroma
# Ollama
pip install langchain_ollama
Con eso fuera del camino, vamos a empezar a construir una solución paso a paso basado en LangChain, Ollama, y DeepSeek R1 A continuación se describen detalladamente los pasos de implementación. A continuación se describen detalladamente los pasos de implementación.
1. Carga de documentos
Cargue documentos PDF y córtelos en bloques de texto del tamaño adecuado.
from langchain_community.document_loaders import PDFPlumberLoader
file = "DeepSeek_R1.pdf"
# Load the PDF
loader = PDFPlumberLoader(file)
docs = loader.load()
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(docs)
2. Inicialización del almacenamiento vectorial
Utilice la base de datos Chroma para almacenar los vectores del documento y configurar el modelo de incrustación proporcionado por Ollama.
from langchain_chroma import Chroma
from langchain_ollama import OllamaEmbeddings
local_embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(documents=all_splits, embedding=local_embeddings)
3. Construcción de expresiones en cadena
Configure plantillas de modelos y señales para construir cadenas de procesamiento.
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama import ChatOllama
model = ChatOllama(
model="deepseek-r1:1.5b",
)
prompt = ChatPromptTemplate.from_template(
"Summarize the main themes in these retrieved docs: {docs}"
)
# 将传入的文档转换成字符串的形式
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
chain = {"docs": format_docs} | prompt | model | StrOutputParser()
question = "What is the purpose of the DeepSeek project?"
docs = vectorstore.similarity_search(question)
chain.invoke(docs)
4. Control de calidad con búsqueda
Integrar funciones de búsqueda y preguntas y respuestas.
from langchain_core.runnables import RunnablePassthrough
RAG_TEMPLATE = """
You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, just say that you don't know. Use three sentences maximum and keep the answer concise.
<context>
{context}
</context>
Answer the following question:
{question}"""
rag_prompt = ChatPromptTemplate.from_template(RAG_TEMPLATE)
retriever = vectorstore.as_retriever()
qa_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| rag_prompt
| model
| StrOutputParser()
)
question = "What is the purpose of the DeepSeek project?"
# Run
qa_chain.invoke(question)
resúmenes
Este tutorial detalla cómo construir una aplicación RAG localizada utilizando DeepSeek R1 y Ollama. Conseguimos una funcionalidad completa en cuatro pasos principales:
- tratamiento de ficheros Utiliza PDFPlumberLoader para cargar documentos PDF y RecursiveCharacterTextSplitter para cortar el texto en trozos del tamaño adecuado.
- almacenamiento vectorial Un sistema de almacenamiento vectorial que utiliza la base de datos Chroma y el modelo de incrustación de Ollama para proporcionar una base para la posterior recuperación de similitudes.
- Construcción en cadena Diseño y aplicación de una cadena de procesamiento que integre el procesamiento de documentos, las plantillas de pistas y las respuestas modelo en un proceso de flujo continuo.
- Realización RAG El objetivo de este proyecto es crear un sistema completo de generación de preguntas y respuestas basado en el contenido de los documentos, que integre las funciones de búsqueda y de preguntas y respuestas.
Con este tutorial, podrás construir rápidamente tu propio sistema RAG local y personalizarlo para mejorarlo según tus necesidades reales. Se recomienda probar en la práctica distintos modelos y configuraciones de parámetros para sacarle el máximo partido.
Nota: Utilizando herramientas como streamlit o FastAPI, es posible desplegar una aplicación RAG local como un servicio web, permitiendo una gama más amplia de escenarios de aplicación.
El repositorio también ofrece
app.py
puede ejecutar el archivo directamente para iniciar el servicio web. Documentación Crear un sistema RAG con DeepSeek R1 y Ollama. Nota: Ejecute previamente el servicio Ollama antes de ejecutar este código.
La página de diálogo es la siguiente:

© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...