jupyter中使用Ollama+langchain构建RAG

最后发布时间 : 2025-03-15 21:36:53 浏览量 :

人工智能正在迅速发展,而检索增强生成(Retrieval-Augmented Generation, RAG)作为游戏规则的改变者脱颖而出。将LLaMA等强大的语言模型与高效的检索机制相结合,通过将生成建立在事实数据的基础上,可以实现高质量、上下文感知的响应。本文我将探讨在jupyter中使用Ollama+langchain实现RAG。

什么是RGA?

总览

RAG是一种混合方法,通过在生成过程中集成外部知识源来增强大型语言模型(LLM)。这确保了响应的事实准确性,并以真实数据为基础,使RAG成为问答、文档摘要和聊天机器人等应用程序的有效技术。

RAG如何工作?

主要包括三个阶段:

  • 数据获取(Data Ingestion)
    • 收集和预处理文档(例如PDF、网页或数据库)。
    • 使用文本分块器将文档拆分为更小、可检索的块(retrievable chunks)。
  • 数据召回(Data Retrieval)
    • 将文档(chunks)作为向量嵌入(vector embeddings)存储在像FAISS这样的向量数据库(vector database)中。
    • 使用语义相似度(semantic similarity)根据查询检索最相关的块。
  • 数据生成(Data Generation)
    • 将检索到的块提供给 LLM,以生成基于事实的一致响应。
    • LLM使用检索到的上下文及其内部知识。

RAG的好处

  • 准确性:通过将反应建立在事实数据的基础上来减少幻觉。
  • 可扩展性:使用矢量数据库高效处理大型数据集。
  • 灵活性:适用于各种LLM和矢量数据库。

RAG

RAG

使用Ollama+langchain实现RAG

需要安装的python包

!pip install langchain
!pip install -U langchain-community
!pip install sentence-transformers
!pip install faiss-gpu # 安装不上尝试安装 faiss-cpu
!pip install pypdf

数据获取(Data Ingestion)

数据嵌入和存储

不使用RAG调用Ollama

使用RAG调用Ollama

参考