RAG及相关技术栈梳理

RAG基础介绍

1. 索引 — 将文档库分割成较短的 Chunk(文档切片),并通过编码器构建向量索引。

2. 检索 — 根据问题和 chunks 的相似度检索相关文档片段。

3. 生成 — 以检索到的上下文为条件,生成问题的回答。

主要流程及技术:

1)ETL-数据接入工具

2)标注系统-问答对生成

3)词嵌入模型-向量化/嵌入

4)向量数据库-向量存储&查询

5)知识库-知识存储

6)Search-知识和向量的检索能力

7)Rerank-混合检索后的重排

8)LLM-利用大模型的生成能力重新整理回答

本次主要介绍3)词嵌入模型和4)向量数据库

词嵌入模型(embedding model

Q:什么是embedding?

A:用户输入的任意语言的文本,都会先进行嵌入操作,转换为向量表示。这个过程即embedding,也可以理解为向量化或者词嵌入的过程

主要模型介绍和对比

模型

公司

开源

Sequence Length

Dimension

text-embedding-3-large

openAI

8192

3072

embedding-v1

百度云

384

bge-large-m3

智源研究院

8192

1024

text-embedding-v3

阿里云

8192

1024

m3e

Meta ai

512

768

Embedding

讯飞

acge

合合信息

1024

1792

bce-embedding-base_v1

网易

512

768

具体使用情况可以自行查阅榜单(在业界权威的中文语义向量评测基准C-MTEB(Chinese Massive Text Embedding Benchmark),是动态变化的。

代码举例

#功能:根据问题检索出最相似的文档(用的bge-m3)

from FlagEmbedding import BGEM3FlagModel

model = BGEM3FlagModel(r'xxx\bge\bge\m3', use_fp16=True)

app = FastAPI()

#2个问题

queries = ["What is BGE M3?",

           "Defination of BM25"]

#2个文档

docs = ["BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.",

        "BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document"]

#问题向量化

query_embeddings = model.encode(queries, batch_size=12, max_length=1024,)['dense_vecs']

#文档向量化

docs_embeddings  = model.encode(docs)['dense_vecs']

#问题和文档两两计算相似度

similarity = query_embeddings @ docs_embeddings.T

#输出相似度结果

print(similarity)

向量数据库

作为存储解决方案使RAGAI Agent 具备记忆能力,能够保存和检索相关信息,实现长期学习和任务连续性。

目标:在数百万甚至数百亿的向量中高效地找到与给定向量最相似的那些向量,同时,也需要高效地存储和管理海量的 embedding

传统数据库虽然能做,但是不专业:无法做到最优,特别是在处理大规模向量时依旧有很大的性能问题和存储开销。如redisearch,在 embedding 数量仅仅在百万级规模时,就要花巨量的内存(> 16G),以及非常漫长的构建索引的时间。有些还没有成熟的相似度算法支持。

向量数据库对比表:

数据库

公司

开源

支持语言

其他

Weaviate

Weaviate

PythonJavaScriptgo

使用图数据结构,专业向量数据库

Qdrant

Qdrant

RustPythongo

专业向量数据库

pgvector

Supabase

任何带有PostgreSQL客户端的语言

PostgreSQL插件

Milvus

Zilliz

python、java、c++、go

专业向量数据库

es

Elastic

python、java、c++、go

7.10支持knn8.0支持向量类型及nlp

流行选择: Chroma, Weaviate, Pinecone, Qdrant, Milvus
特殊方案: Postgres + pgvector 扩展

也可自行查阅业界留下的向量数据库排行榜,动态变化。

RAG框架

已有很多成熟的框架封装好了上面说的一些技术组件并提供web形式的管控门户:

  1. AnythingLLM,具备完整的 RAGAI代理能力。https://github.com/Mintplex-Labs/anything-llm
  2. MaxKB,即插即用。https://github.com/1Panel-dev/MaxKB
  3. RAGFlow,一个基于深度文档理解的开源RAG引擎。https://github.com/infiniflow/ragflow
  4. Dify,一个开源的大型语言模型应用开发平台。Dify直观的界面结合了AI工作流、RAG流程、代理能力、模型管理、可观测性功能。https://github.com/langgenius/dify
  5. FastGPT,提供即开即用的数据加工和模型调用能力,允许通过流程可视化进行工作流编排。https://github.com/labring/FastGPT  。项目技术栈:NextJs + TS(TypeScript) + ChakraUI + Mongo + Postgres (Vector 插件)

Graph-RAG框架

GraphRAG 及如今热门的 KAG框架的核心改进在于 RAG 的基础上,加强了实体、Chunk之间的关联,适当融入了知识图谱的功能,以此来提高信息检索挖掘潜在实体关联的能力,增强检索召回。

  1. LightRAG,简单快速的Graphrag检索增强生成。https://github.com/HKUDS/LightRAG
  2. microsoft-GraphRAG,一个模块化的基于图的检索增强生成(RAG)系统。https://github.com/microsoft/graphrag
  3. KAG,基于OpenSPG引擎的知识增强生成框架https://github.com/OpenSPG/KAG
  4. Fast-GraphRAGGraphRAG的轻量化版本。https://github.com/circlemind-ai/fast-graphrag
  5. Tiny-GraphRAGhttps://github.com/limafang/tiny-graphrag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值