文章目录
前言
在之前的博客中,笔者尝试利用ollama和anythingLLM建立了本地知识库,并在局域网内,提供接口给其他人使用。在本文中,笔者尝试利用另外一个工具RAGFlow,来搭建本地知识库。
一、微调技术和RAG技术是什么?
微调技术是一种针对特定任务对已有模型进行精细调整的技术,可以提升模型的性能.
检索增强生成技术(Retrieval Augmented Generation, RAG),可以通过从数据源中检索信息来辅助大语言模型(Large Language Model, LLM)生成答案。
1.RAG技术的原理
检索(Retrieval)
目标:从大量的文档集合中检索出与输入问题或上下文最相关的文档片段。这些文档可以是网页、书籍、知识库等中的文本内容。
方法:通常使用倒排索引、向量检索等技术。例如,将文档转换为向量表示,通过计算输入问题向量与文档向量之间的相似度(如余弦相似度),来找到最相关的文档片段。倒排索引则可以快速定位包含特定关键词的文档。
作用:为后续的生成步骤提供丰富的背景信息,避免生成模型仅依赖有限的上下文信息进行生成,从而提高生成内容的准确性和丰富性。
增强(Augmentation)
目标:将检索到的文档片段与原始输入问题或上下文进行融合,形成增强后的输入。这个过程可以是简单的拼接,也可以是更复杂的融合策略。
方法:一种常见的方法是将检索到的文档片段作为额外的上下文信息,与原始输入拼接在一起,形成一个更长的输入序列。也可以通过注意力机制等技术,让模型更关注检索到的重要信息。
作用:使生成模型能够利用外部知识,增强对问题的理解和回答的能力,避免生成模型“闭门造车”,仅依赖自身训练数据中的知识。
生成(Generation)
目标:基于增强后的输入,生成高质量的输出,如回答问题、生成文本等。
方法:通常使用预训练的生成模型,如Transformer架构的模型(如GPT系列、BART等)。这些模型在经过适当的微调后,能够根据增强后的输入生成自然、准确的输出。
作用:生成最终的文本结果,满足用户的任务需求,如回答问题、生成文章等。
Naive RAG如上图所示。来源:https://blog.youkuaiyun.com/wshzd/article/details/135254264
2.什么是Embedding?
在大型语言模型(LLM)中,Embedding是指将离散的文本数据(如单词、短语或句子)转换为连续的数值向量的过程。这些向量捕捉了文本的语义和语法特征。具体而言,Embedding将高维度的离散数据映射到低维度的连续向量空间中。在这个空间中,语义相似的文本片段会被映射到彼此接近的位置。例如,表示“猫”和“狗”的向量在空间中可能更接近,因为它们在语义上相关联。
二、Windows本地部署RAGFlow
1.下载ollama,通过ollama本地运行DeepSeek模型
具体安装步骤可见于:文章
2.下载RAGFlow源代码和Docker,通过Docker来本地部署RAGFlow
Docker具体安装步骤可见于:文章链接
RAGFlow具体安装步骤可见于:视频链接
3.在RAGFlow中构建个人知识库并实现基于个人知识库的对话问答
RAGFlow中构建个人知识库,也可见于:视频链接
4.使用
首先在本地运行docker。在RAGFlow的官方文档[https://github.com/infiniflow/ragflow/blob/main/README_zh.md]中可以找到RAGFlow的打开方式:
在浏览器中输入localhost:80进入下面的界面。
登录后即可新建知识库和新建对话(详细步骤可见上面的视频链接 中的24分46秒):
总结
本文记录了Docker安装和RAGFlow安装教程资源,并尝试在RAGFlow中构建个人知识库。下一篇博客中,笔者将利用RAGFlow实现sql查询功能。