支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


AI搜索与向量数据-模型是如何将信息和数据编码成知识的?

发布日期:2025-05-20 22:12:14 浏览次数: 1519 作者:思维小岛
推荐语

探索AI搜索如何将数据转化为知识,揭秘向量数据库的核心技术。

核心内容:
1. 向量数据库:数据语义编码与相似性衡量
2. 向量嵌入技术:处理非结构化数据
3. 应用场景与方法:NLP、CV、推荐系统及多模态应用

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家


针对每个概念和知识点,结合其应用原理、具体的应用场景以及实践中的应用方法,进行更深入、更详细的解析和描述。


1. 向量数据库入门 (Intro to Vector Databases)
核心思想:将数据的语义含义编码为高维空间中的向量,通过计算向量间的距离(如余弦相似度、欧氏距离)来衡量数据的相似性,从而实现基于“含义”而非“字面”的搜索。

  • 非结构化数据对象 (Unstructured Data Objects):

    • 企业内部文档: 会议记录、报告、邮件、聊天记录等。

    • 互联网内容: 新闻文章、博客帖子、社交媒体更新、用户评论。

    • 多媒体资料: 产品图片库、监控视频片段、用户上传的音频文件。

    • 应用原理: 传统数据库依赖结构化模式(Schema)进行查询,无法有效处理格式多样、无固定结构的文本、图像、音视频等数据。向量嵌入技术可以将这些对象转化为统一的数值表示(向量),从而使其可被计算和比较。


  • 应用方法: 首先需要识别数据类型,然后选择合适的工具或流程(如 OCR、文本提取库、音视频转录工具)将其转换为可处理的格式(如纯文本、图像文件),再送入嵌入模型。

  • 向量 (Vector):

    • 应用原理: 作为数据在高维语义空间中的坐标表示。向量的每个维度代表了数据某个抽象特征的一部分。空间中距离相近的向量,其代表的原始数据在语义上通常也更相似。

    • 应用场景: 存储在向量数据库中,作为数据索引和查询的基本单元。

    • 应用方法: 由嵌入模型生成,通常表现为浮点数或整数的数组。其维度(例如 384, 768, 1536 维)由所选的嵌入模型决定。

  • 向量嵌入 (Vector Embedding):

    • 自然语言处理 (NLP): 文本分类、情感分析、问答系统、机器翻译、语义搜索。

    • 计算机视觉 (CV): 图像检索(以图搜图)、人脸识别、物体检测、图像相似性推荐。

    • 推荐系统: 基于用户行为或物品内容的相似性进行推荐。

    • 多模态应用: 文本与图像的跨模态检索。

    • 应用原理: 基于机器学习(特别是深度学习)的“表示学习”思想,模型通过学习大量数据,将输入的复杂数据(如词语、句子、图像像素)映射到一个低维(相对于原始数据复杂性)但信息密集的向量空间中,使得语义相似的对象在空间中距离更近。这通常利用了“分布假说”(相似上下文中的词语/对象具有相似含义)。


  • 应用方法: 选择合适的预训练嵌入模型(如 Sentence-BERT 用于句子,CLIP 用于图文,Word2Vec 用于词语),将预处理后的数据输入模型,获取输出的向量表示。根据任务可能需要对模型进行微调。

  • 嵌入模型 (Embeddings Model):

    • 选择模型: 根据数据类型(文本、图像、音频、多模态)和具体任务(通用语义、特定领域)选择合适的预训练模型(如 Hugging Face Transformers 库提供了大量选择)。

    • 模型部署: 将模型部署为服务或集成到数据处理流程中。

    • 微调 (Optional): 如果通用模型在特定领域效果不佳,可以使用领域相关的标注数据对模型进行微调,以提升嵌入质量。

    • 应用原理: 利用神经网络(如 Transformer、CNN、RNN)学习数据中的模式和关系。对于文本,模型学习词语、句子间的上下文关系;对于图像,学习像素、纹理、形状、物体间的关系。多模态模型则学习不同模态数据间的对应关系。

    • 应用场景: 是生成向量嵌入的核心工具,应用于所有需要将数据转化为向量表示的场景。


  • 基于向量的索引 (Vector-Based Index):

    • HNSW 原理: 构建分层图,搜索时从稀疏的顶层图开始进行大范围跳转,逐步下沉到更稠密的底层图进行精确查找。

    • IVF 原理: 先将向量空间聚类成多个 Voronoi 单元,索引存储每个向量所属的单元以及单元内的向量列表。搜索时先定位到查询向量最接近的几个单元,再在这些单元内进行精确搜索。

    • 应用原理: 解决高维空间中精确最近邻搜索的“维度灾难”问题。通过构建特殊的数据结构(如图、树、哈希),将向量组织起来,使得搜索时可以快速定位到可能包含最近邻的区域,牺牲极小的精度(找到近似最近邻 ANN)来换取数量级的速度提升。

  • 应用场景: 向量数据库的核心组件,用于加速相似性搜索。没有高效索引,对大规模向量数据集的搜索将非常缓慢。

  • 应用方法: 在向量数据库中创建集合(Collection)时,通常需要指定索引类型(如 HNSW, IVF_FLAT, IVF_PQ)和相关参数(如 HNSW 的 M 和 efConstruction,IVF 的 nlist)。数据库会在数据插入时自动构建或更新索引。查询时,通过设置搜索参数(如 HNSW 的 efSearch,IVF 的 nprobe)来平衡搜索速度和召回率。

  • 向量数据库 (Vector Database):

    • 语义搜索引擎: 提供比关键词匹配更智能、更懂用户意图的搜索体验。

    • 推荐系统: 基于用户画像向量或物品向量推荐相似内容。

    • 问答与对话系统 (RAG): 快速从大量文档中检索与用户问题相关的上下文信息。

    • 图像/视频/音频库管理: 实现以图搜图、相似音频查找等功能。

    • 异常检测: 寻找与正常数据模式(向量)偏离较远的异常点。

    • 应用原理: 集成了向量存储、高效 ANN 索引、向量查询(基于相似度度量)以及传统数据库管理功能(如数据增删改查、元数据过滤、扩展性、高可用性)的系统。


  • 应用方法:

    • 选型: 根据性能需求、数据规模、部署方式(云服务 vs. 本地部署)、生态整合等因素选择合适的向量数据库(Weaviate, Pinecone, Milvus, Qdrant等)。

    • 部署与配置: 安装部署数据库,创建集合,配置向量维度、距离度量、索引类型及参数。

    • 数据导入: 将原始数据通过嵌入模型转换为向量,连同其元数据一起导入数据库。

    • 查询: 通过 SDK 或 API 发起向量相似性搜索请求,可结合元数据进行过滤。

    • 运维: 监控数据库性能,根据需要进行扩缩容、备份恢复等操作。


2. 搜索 (Search)
核心思想:结合不同搜索范式的优点,弥补各自的缺点,以达到更好的综合搜索效果。特别是结合关键词的精确性和向量搜索的语义理解能力。

  • 稀疏向量 (Sparse Vectors):

    • 应用原理: 基于词频统计和逆文档频率,向量维度等于词汇表大小,每个维度对应一个词。向量值通常表示该词在文档中的重要性(如 TF-IDF 或 BM25 得分),大部分维度为零。捕捉的是词袋模型的“精确匹配”信息。

    • 应用场景: 传统关键词搜索引擎、需要精确匹配术语或ID的场景、混合搜索中的关键词部分。

    • 应用方法: 使用如 Scikit-learn 的 TfidfVectorizer 或专门的 BM25 库来从文本生成稀疏向量。在某些向量数据库(如 Weaviate)中,可以直接使用 BM25 进行关键词检索,底层机制类似稀疏向量。

  • 稠密向量 (Dense Vectors):

    • 应用原理: 通过深度学习模型将输入(文本、图像等)映射到较低维度的连续向量空间,捕捉输入的语义、上下文和抽象特征,而非表面词汇。

    • 应用场景: 语义搜索、相似性推荐、聚类、分类、RAG 中的语义检索部分。

    • 应用方法: 使用预训练的嵌入模型(如 SBERT, CLIP)生成稠密向量,并存储在向量数据库中进行相似性搜索。

  • BM25/BM25F:

    • 应用原理: 基于概率信息检索模型,改进了 TF-IDF。它考虑了词频(TF)、逆文档频率(IDF)、文档长度归一化(惩罚过长文档)和词频饱和度(词频增加到一定程度后,其对相关性的贡献不再线性增加)。BM25F 进一步允许为文档的不同字段(如标题、正文)赋予不同权重。

    • 应用场景: 现代搜索引擎中广泛使用的关键词排序算法;混合搜索中计算关键词相关性分数。

    • 应用方法: 作为独立的排序函数库使用,或集成在搜索引擎(如 Elasticsearch, OpenSearch)或某些向量数据库(如 关键词搜索模块)中。需要提供查询词和文档集合。

  • Alpha 参数 (Alpha Parameter):

    • 应用原理: 在混合搜索的最后融合阶段,作为一个超参数,用于线性组合(或其他方式)来自不同检索策略(如向量搜索和关键词搜索)的相关性分数。它决定了最终排名更偏向语义匹配还是关键词匹配。

    • 应用场景: 调整混合搜索系统的行为,使其适应不同类型的查询或数据集。例如,对于包含产品代码的查询,可能希望关键词权重更高;对于描述性查询,则向量权重更高。

    • 应用方法: 在混合搜索查询时指定 Alpha 值(通常在 0 到 1 之间)。最佳值通常需要通过实验和评估来确定。例如,混合搜索查询允许指定 alpha 参数。

  • 融合算法 (Fusion Algorithm):

    • 应用原理: 旨在合并来自多个(通常是异构的)排序系统的结果列表,生成一个单一的、更优的排序列表。常见的 RRF (Reciprocal Rank Fusion) 算法不依赖于原始分数的大小,而是基于文档在各个列表中的排名来计算融合分数,对排名靠前的结果给予更高的权重,具有较好的鲁棒性。

    • 应用场景: 混合搜索(合并向量搜索和关键词搜索结果)、集成搜索(合并来自不同搜索引擎或数据库的结果)。

    • 应用方法: 获取每个搜索系统的结果列表(文档ID和排名),应用 RRF 或其他融合算法(如 CombSUM, CombMNZ)计算每个文档的融合分数,然后根据融合分数对所有文档进行最终排序。

  • 混合搜索 (Hybrid Search):

    • 电商搜索: 用户可能搜索精确型号(关键词)或描述性需求(语义)。

    • 企业知识库搜索: 需要找到包含特定术语的文档,也要找到讨论相关概念的文档。

    • 通用 Web 搜索: 平衡精确匹配和意图理解。

    • 应用原理: 同时执行关键词搜索(利用其精确性优势,处理术语、代码、名称等)和向量搜索(利用其语义理解优势,处理同义词、近义词、概念匹配),然后通过融合算法合并结果。目标是取长补短,提高整体搜索召回率和精度。


  • 应用方法:

    • 使用支持混合搜索的数据库或框架(如Elasticsearch 的一些插件)。

    • 或者,分别查询关键词系统和向量系统,然后自行实现融合逻辑。

    • 需要调整 alpha 参数和选择合适的融合算法。

  • 关键词搜索 (Keyword Search):

    • 应用原理: 基于文本中词语的精确匹配或词形变化(如词干提取、词形还原)。通常使用倒排索引加速查找包含查询词的文档,并用 BM25 或 TF-IDF 等算法排序。

    • 应用场景: 需要查找包含特定词语、代码、标识符的文档。传统搜索引擎的核心。

    • 应用方法: 使用 Elasticsearch, OpenSearch, Solr 等搜索引擎,或数据库的全文搜索功能。

  • 语义/向量搜索 (Semantic/Vector Search):

    • 应用原理: 将查询和文档都转换为向量嵌入,然后在向量空间中查找与查询向量最相似(距离最近)的文档向量。相似度计算(如余弦相似度)衡量了语义上的接近程度。

    • 应用场景: 理解用户意图的搜索、问答系统、推荐系统、以图搜图等需要基于“含义”匹配的场景。

    • 应用方法: 使用向量数据库或支持向量搜索的库(如 Faiss, Annoy)进行。需要先将数据嵌入化。


3. 分层可导航小世界 (HNSW)
核心思想:通过构建一个多层的邻近图(Proximity Graph)来加速高维空间中的近似最近邻搜索。

  • 分层图结构 (Hierarchical Graph Structure):

    • M: 图中每个节点的最大连接数,影响图的密度和内存占用。

    • efConstruction: 构建索引时动态邻居列表的大小,影响索引构建时间和质量。

    • 应用原理: 模拟现实世界中小世界网络(如社交网络)的特性。顶层图节点少、边连接距离远(类似高速公路),用于快速跨越向量空间;底层图节点多、边连接距离近(类似本地道路),用于在目标区域内进行精细查找。每层都是一个邻近图,节点是向量,边连接相似的向量。

    • 应用场景: 作为向量数据库(如 Weaviate, Milvus, Qdrant)或向量检索库(如 Faiss, NMSLIB)中高效 ANN 索引的核心实现方式。

    • 应用方法: 在创建索引时选择 HNSW 类型,并配置关键参数:

  • ANN - 近似最近邻:

    • 应用原理: 在高维空间中,精确找到最近邻非常耗时。ANN 算法旨在以极高的概率快速找到查询点的“足够近”的邻居,牺牲理论上的绝对精确性换取实际应用中的巨大速度提升。各种 ANN 算法采用不同策略(如图、树、哈希、量化)来压缩搜索空间或向量本身。

    • 应用场景: 所有需要在大规模高维数据上进行快速相似性搜索的场景,如向量数据库查询、推荐系统、聚类等。

    • 应用方法: 选择并配置具体的 ANN 索引算法(如 HNSW, IVF, LSH, PQ)。查询时,可以设置参数(如 HNSW 的 efSearch)来平衡搜索速度和召回率/精度。

  • 分层导航 (Layered Navigation):

    • 应用原理: HNSW 搜索的核心机制。从顶层图的一个(或多个)入口点开始,在当前层贪婪地沿着边移动到离查询向量更近的节点。当在当前层找不到更近的节点时,下降到下一层,以当前节点作为入口点,继续贪婪搜索。这个过程重复直到到达最底层(第 0 层),并在该层进行最终的精细搜索。

    • 应用场景: HNSW 索引执行查询时的内部工作流程。

    • 应用方法: 用户通过查询接口发起搜索,数据库内部的 HNSW 模块执行此导航过程。用户通常可以通过设置查询时的 efSearch 参数(动态邻居列表大小)来控制搜索的深度和广度,从而影响速度和精度。

  • 基于图的索引 (Graph-Based Index):

    • 应用原理: 将数据集中的每个向量视为图中的一个节点,如果两个向量足够相似(距离近),则在它们之间添加一条边。搜索时,从某个入口节点开始,沿着图的边在邻居之间跳转,逐步接近查询向量。HNSW 是这种方法的一种先进的分层实现。

    • 应用场景: 特别适用于高维数据的 ANN 搜索,相比于树基索引(在高维下性能下降)和 LSH(通常需要较长的哈希码才能达到高精度)具有较好的综合性能。

    • 应用方法: HNSW 是最常用的基于图的索引之一。其他如图索引算法(如 NSG, FANNG)也存在,但 HNSW 因其鲁棒性和性能而被广泛采用。


4. 多模态 RAG (Multimodal RAG)
核心思想:将 RAG 的能力从纯文本扩展到包含图像、音频、视频等多种数据类型,让 LLM 能够基于检索到的混合信息进行理解和生成。

  • 跨模态推理 (Cross Modal Reasoning):

    • 视觉问答 (VQA): 根据图像内容回答关于图像的问题。

    • 图像/视频字幕生成: 为图像或视频生成文本描述。

    • 文本到图像生成: 根据文本描述生成图像。

    • 多模态 RAG: 理解检索到的图文、音视频片段等混合上下文。

    • 应用原理: AI 模型能够理解和关联来自不同模态(如文本描述和图像内容)的信息。这通常依赖于将不同模态的数据映射到一个共享的语义空间(通过多模态嵌入模型),使得模型可以比较和整合它们。


  • 应用方法: 依赖于强大的多模态模型(如 CLIP, BLIP, Flamingo, GPT-4V 等),这些模型在训练过程中学习了跨模态的关联。

  • 多模态嵌入模型:

    • 跨模态检索: 用文本搜图片、用图片搜文本、用图片搜视频等。

    • 多模态 RAG 的检索阶段: 使用文本查询检索相关的图像或视频片段,反之亦然。

    • 应用原理: 通过特定的网络结构(如双编码器或融合编码器)和训练目标(如对比学习),学习一个统一的向量空间,使得语义相关的不同模态对象(如“狗”的图片和“狗”的文本)在该空间中距离接近。CLIP 使用对比学习,在大量图文对上进行训练,迫使匹配的图文对嵌入相似,不匹配的则远离。


  • 应用方法: 使用预训练的多模态嵌入模型(如 sentence-transformers 库中的 CLIP 模型),将不同模态的数据输入,得到可在同一空间比较的向量嵌入。

  • 多模态对比微调:

    • 应用原理: 对比学习的一种应用,特别用于优化多模态嵌入。通过构造正样本对(如匹配的图像和标题)和负样本对(如不匹配的图像和标题),训练模型拉近正样本对的嵌入距离,推远负样本对的嵌入距离。这使得嵌入空间对语义关系更敏感。

    • 应用场景: 提升特定领域或任务下多模态嵌入模型的性能,例如在医学影像和报告、或特定产品图片和描述上进行微调,以提高检索精度。

    • 应用方法: 收集目标领域的配对多模态数据,使用对比损失函数(如 InfoNCE loss)对预训练的多模态嵌入模型进行进一步训练。

  • 任意到任意搜索 (Any-to-any Search):

    • 应用原理: 基于统一的多模态嵌入空间,任何一种模态的数据都可以被编码成向量,并作为查询去检索数据库中任何其他模态的、向量距离相近的数据。

    • 应用场景: 强大的多模态搜索引擎、数字资产管理系统,允许用户以最方便的方式(文本、图片、音频)查找所有类型的相关内容。

    • 应用方法: 需要一个支持存储和查询多模态嵌入的向量数据库,以及一个能够生成高质量共享空间嵌入的多模态模型。查询时,先将查询(无论何种模态)转换为向量,然后在数据库中进行相似性搜索。

  • 多模态 RAG (卡片说明):

    • 解释图表或复杂图像: 用户上传图片提问,RAG 检索相关文本知识,LLM 结合两者回答。

    • 基于视频内容的问答: 检索视频关键帧和相关文本,回答关于视频内容的问题。

    • 生成包含图片的产品描述或报告。

    • 应用原理: 结合了 RAG 的检索增强思想和多模态处理能力。当用户提出查询时,系统不仅检索文本,还可能检索图像、音频、视频片段等,并将这些多模态信息连同原始查询一起提供给一个能够理解多模态输入的 LLM(如 GPT-4V, Gemini),由其生成最终答案。


  • 应用方法: 构建流程:

  • 1. 使用多模态嵌入模型对知识库中的多模态数据进行嵌入并存入向量数据库。

  • 2. 对用户查询(可能是文本或图像等)进行嵌入。

  • 3. 在向量数据库中进行跨模态检索,获取相关的多模态数据块。

  • 4. 将查询和检索到的多模态上下文(可能需要特殊格式编码)一起输入给多模态 LLM。

  • 5. LLM 生成响应。




5. 数据库 (Databases)
核心思想:为不同类型的数据(结构化、非结构化、关系型、图状)和不同的应用需求(存储、检索、分析、扩展性)提供合适的管理和访问机制。

  • 图数据库 (Graph Database):

    • 社交网络分析: 好友关系、社区发现、影响力分析。

    • 推荐引擎: 基于用户-物品交互关系、物品相似关系进行推荐。

    • 欺诈检测: 识别异常连接模式、关联账户。

    • 知识图谱: 构建和查询实体及其关系网络。

    • 网络与IT运营: 依赖关系分析、影响范围确定。

    • 应用原理: 基于图论,使用节点(Nodes)表示实体,边(Edges)表示实体间的关系,属性(Properties)存储节点和边的信息。查询语言(如 Cypher, Gremlin)优化了对复杂关系的遍历和模式匹配操作(例如查找朋友的朋友、最短路径等)。


  • 应用方法: 选择图数据库(如 Neo4j, ArangoDB, NebulaGraph),定义图模型(节点标签、边类型、属性),导入数据,使用图查询语言进行查询和分析。

  • 倒排索引 (Inverted Indexes):

    • 应用原理: 核心是一个数据结构,通常由两部分组成:词典(Term Dictionary)和倒排列表(Postings List)。词典存储所有文档中出现的词语(或其他索引单元),并指向其倒排列表。倒排列表记录了包含该词语的文档 ID、词频、位置等信息。查询时,先在词典中查找查询词,获取对应的倒排列表,然后通过合并(如 AND 操作取交集,OR 操作取并集)多个词的倒排列表来找到匹配的文档。

    • 应用场景: 全文搜索引擎(如 Elasticsearch, Lucene)的核心;数据库的文本搜索功能;传统信息检索系统。

    • 应用方法: 在搜索引擎或支持全文搜索的数据库中创建索引时,系统会自动为指定的文本字段构建倒排索引。用户通过查询接口输入关键词进行搜索。

  • 分片 (Sharding):

    • 应用原理: 水平分区(Horizontal Partitioning)的一种形式,将数据库(表或集合)的数据行(或文档)分散到多个独立的数据库实例(分片)上。通过一个分片键(Shard Key)来决定数据行属于哪个分片。查询时,路由组件(如 mongos in MongoDB)根据查询条件中的分片键将请求定向到对应的分片,或者在无法确定时将请求广播到所有分片并聚合结果。

    • 应用场景: 处理超过单机容量或性能极限的大规模数据集;提高写入和读取的并发能力;提升系统的可用性(一个分片故障不影响其他分片)。广泛应用于大型关系数据库、NoSQL 数据库和向量数据库。

    • 应用方法: 在数据库层面进行配置。需要选择合适的分片键(影响数据分布均衡性和查询效率),确定分片策略(如哈希分片、范围分片)。数据库集群通常会自动处理数据的分布和查询路由。例如,在 Milvus 中,可以配置 Collection 的分片数 (shard_num)。

  • 多租户 (Multi Tenancy):

    • 应用原理: 在共享的基础设施(硬件、数据库实例)上,通过软件层面的逻辑隔离(如使用租户 ID 区分数据、独立的访问控制策略、资源配额限制)来服务多个客户(租户)。每个租户感觉像在使用独立的系统,但实际上共享资源,从而降低成本。

    • 应用场景: SaaS (软件即服务) 应用,如 CRM 系统、项目管理工具、云数据库服务(包括很多向量数据库云服务)。

    • 应用方法: 对于服务提供商,需要在应用架构层面设计好租户隔离机制。对于用户,通常是在注册服务时获得一个隔离的租户环境,通过 API Key 或特定账户进行访问,无需关心底层的共享细节。

  • 关系数据库 (Relational Database):

    • 应用原理: 基于关系模型,数据存储在具有固定列(字段)和数据类型的表中,行(记录)代表实例。通过主键和外键强制实施实体完整性和参照完整性。使用 SQL 进行数据定义、操作和查询,支持 ACID 事务(原子性、一致性、隔离性、持久性),保证数据的一致性和可靠性。

    • 应用场景: 事务处理系统(OLTP)、业务数据管理、需要强一致性保证的场景、存储结构化数据。例如,订单管理、用户账户、库存系统。

    • 应用方法: 设计数据库模式(Schema),创建表结构,使用 SQL 语句进行增删改查操作。可以通过索引(如 B-Tree 索引)优化查询性能。

  • PQ (乘积量化 - Product Quantization):

    • 应用原理: 一种向量有损压缩技术,旨在减少存储空间和加速距离计算。

  1. 分割: 将原始高维向量(如 D 维)分割成 M 个低维子向量(每个 D/M 维)。

  2. 聚类: 对数据集中所有向量的第 i 个子向量进行聚类(通常使用 K-Means),得到 K 个聚类中心(码字, codewords),形成第 i 个子空间的码本(codebook)。

  3. 量化: 对于任意一个原始向量,将其每个子向量替换为其所属子空间码本中最接近的码字的 ID。

  4. 存储: 原始向量被压缩为一个由 M 个码字 ID 组成的短代码。

  5. 距离计算: 可以通过预计算码字间距离或使用近似距离(如非对称距离计算 ADC)来快速估算压缩向量间的距离。

  • 应用场景: 大规模向量相似性搜索,通常与其他索引结构(如 IVF)结合使用(称为 IVF_PQ),用于压缩存储在倒排列表中的向量,或直接作为一种索引方法。

  • 应用方法: 在向量数据库或库(如 Faiss)中创建索引时,选择 PQ 或 IVF_PQ 类型,并指定参数,如子向量数量 M 和每个子空间的码字数量 K(通常 K=256,对应 8 比特)。选择合适的参数需要在压缩率、内存占用、搜索速度和精度之间进行权衡。


  • 6. 大语言模型 (Large Language Models - LLMs)
    核心思想:利用超大规模的神经网络(通常是 Transformer 架构)和海量的文本数据进行预训练,学习语言的统计规律、语法结构、语义关系乃至一定的世界知识和推理能力,使其能够理解和生成自然语言。

    • 大语言模型 (LLM):

      • 内容生成: 写文章、邮件、代码、诗歌、广告文案等。

      • 问答与对话: 智能客服、聊天机器人、虚拟助手。

      • 文本摘要与翻译。

      • 情感分析与文本分类。

      • RAG 中的生成器: 基于检索到的上下文生成答案。

      • 应用原理: 基于 Transformer 架构的自监督学习。模型在预训练阶段通过预测文本中的下一个词(Causal LM, 如 GPT)或被掩盖的词(Masked LM, 如 BERT)来学习语言表示。巨大的模型参数量和训练数据使其能够捕捉复杂的语言现象。


    • 应用方法: 通过 API (如 OpenAI API, Google Gemini API) 调用预训练好的模型,或者下载开源模型(如 Llama, Mistral)进行本地部署和使用/微调。需要进行提示工程 (Prompt Engineering) 来引导模型产生期望的输出。

    • 微调 (Finetuning):

      • 特定领域问答: 针对医学、法律、金融等专业领域进行微调。

      • 特定风格或角色扮演: 让模型模仿特定人物的说话风格。

      • 提升特定任务性能: 如在特定类型的摘要或翻译任务上进行微调。

      • 指令遵循: 通过指令微调 (Instruction Tuning) 让模型更好地理解和执行用户指令。

      • 应用原理: 在预训练好的通用 LLM 基础上,使用特定任务或领域的标注数据集进行额外的训练。这使得模型能够调整其参数,更好地适应目标任务的特点和数据分布,同时保留预训练阶段学到的通用语言能力。


    • 应用方法: 准备目标任务的标注数据集(输入-输出对),选择合适的预训练模型,使用专门的训练框架(如 Hugging Face transformers 库的 Trainer API)进行微调。需要调整学习率、训练轮数等超参数。微调后的模型可以部署使用。

    • 多模态 (Multi-modal):

      • 应用原理: 指 AI 系统处理和整合来自多种感官输入(文本、图像、音频、视频等)的能力。多模态 LLM 通常具有能够处理不同模态输入的编码器,并将这些表示融合到一个共同的空间,然后由核心的语言模型进行处理和生成。

      • 应用场景: 视觉问答、图像描述、文本到图像生成、多模态对话系统、多模态 RAG。

      • 应用方法: 使用支持多模态输入的 LLM API(如 GPT-4V, Gemini Pro Vision)或部署相应的开源模型。输入时需要按照模型要求提供不同模态的数据(例如,文本与图像 URL 或 Base64 编码)。

    • 嵌入模型 (LLM context):

      • 应用原理: 在 LLM 内部,输入文本首先会被分词 (Tokenization),然后每个词元 (Token) 会被转换为一个向量嵌入。这些初始嵌入(通常包含词嵌入、位置嵌入、段落嵌入等)是 LLM 处理序列信息的起点,后续的 Transformer 层会不断地转换和丰富这些嵌入表示。同时,独立的嵌入模型(如 Sentence-BERT)常用于 RAG 的检索阶段,专门生成用于相似性搜索的文本表示。

      • 应用场景: LLM 内部处理流程的必需部分;RAG 系统的检索组件。

      • 应用方法: 对于 LLM 内部嵌入,是模型固有的一部分。对于 RAG 检索,需要选择并使用一个独立的、高质量的文本嵌入模型。

    • 分块 (LLM context):

      • 应用原理: 由于 LLM 的 Transformer 架构通常有固定的上下文窗口大小限制(如 4k, 8k, 32k, 128k 词元),无法一次性处理非常长的文档。分块是将长文档切分成小于上下文窗口限制的片段的过程,以便可以逐块处理或在 RAG 中检索最相关的块。

      • 应用场景: 处理超过 LLM 上下文长度的文档;为 RAG 系统准备知识库数据。

      • 应用方法: 选择合适的分块策略(固定大小、递归、语义等),使用如 LangChain, LlamaIndex 等框架提供的分块工具进行操作。需要考虑块大小、重叠(overlap)等参数,以平衡信息完整性和处理效率。

    • 生成式 AI (Generative AI):

      • 应用原理: 区别于判别式 AI(如分类、回归),生成式 AI 的目标是学习训练数据的底层分布,并能从中采样生成新的、与训练数据相似但不同的数据。LLM 通过学习语言的概率分布来生成文本,扩散模型通过逐步去噪来生成图像等。

      • 应用场景: 内容创作、艺术设计、数据增强、虚拟世界构建、药物发现等。LLM 是其中的重要分支。

      • 应用方法: 使用相应的生成模型(LLM, Stable Diffusion, Midjourney等),通过提供提示 (Prompt) 或条件来引导生成过程。

    • Transformer 模型:

      • 应用原理: 其核心是自注意力机制 (Self-Attention),允许模型在处理序列中的每个元素时,动态地计算序列中所有其他元素对当前元素的重要性(注意力权重),并据此聚合信息。这使得模型能够有效地捕捉长距离依赖关系,并且易于并行计算。多头注意力 (Multi-Head Attention) 允许模型从不同表示子空间关注信息。结合位置编码 (Positional Encoding) 来处理序列顺序。编码器-解码器 (Encoder-Decoder) 结构或仅编码器/解码器结构被广泛应用。

      • 应用场景: 几乎所有现代顶级 LLM 的基础架构;机器翻译、文本摘要、问答系统等众多 NLP 任务。

      • 应用方法: 作为底层架构被集成在各种 LLM 和 NLP 模型中。研究人员和开发者通常使用基于 Transformer 的预训练模型,并通过微调等方式适配具体任务。


    7. 信息检索/搜索 (Information Retrieval/Search)
    核心思想:从大规模数据集合中,根据用户的信息需求(通常表示为查询),找到相关的、有用的信息(通常是文档或数据片段)。

    • 重排序 (Reranking):

      • 应用原理: 分阶段检索思想。第一阶段(召回/检索)使用快速但相对粗糙的方法(如 BM25, ANN 向量搜索)从海量数据中筛选出候选集(如 Top K=100)。第二阶段(重排序)对这个较小的候选集应用更复杂、更精确但计算成本更高的模型(如基于 Transformer 的交叉编码器 Cross-Encoder)来重新打分和排序,得到最终结果(如 Top N=10)。交叉编码器将查询和每个候选文档同时输入模型,可以进行更深层次的相关性判断。

      • 应用场景: 提高搜索引擎、推荐系统、RAG 系统的最终结果精度和相关性。

      • 应用方法: 在初始检索后,将查询和候选文档对送入重排序模型(如 sentence-transformers 库中的 Cross-Encoder 模型),根据模型输出的相关性分数对候选集进行重新排序。

    • 检索增强生成 (RAG):

      • 企业智能问答: 基于内部文档库回答员工或客户问题。

      • 特定领域知识助手: 如医疗、法律咨询辅助。

      • 需要引用来源或最新信息的问答系统: 弥补 LLM 知识截止和幻觉问题。

      • 应用原理: 结合了信息检索(从知识库中查找相关信息)和自然语言生成(利用 LLM 生成流畅、连贯的回答)的优点。基本流程:接收用户查询 -> 使用查询(嵌入后)在向量数据库(或其他知识库)中检索相关文档片段(上下文)-> 将原始查询和检索到的上下文组合成一个扩展的提示 -> 将此提示输入 LLM -> LLM 基于提供的上下文生成最终回答。


    • 应用方法:

      • 构建知识库: 准备文档,进行分块、嵌入,并存入向量数据库。

      • 实现检索器: 选择嵌入模型和向量数据库,实现根据查询检索 Top K 相关块的功能。

      • 实现生成器: 选择 LLM,设计合适的提示模板,将查询和检索到的上下文整合后输入 LLM。

      • 集成与优化: 使用 LangChain, LlamaIndex 等框架简化构建过程,并应用各种高级 RAG 技术进行优化。




    8. 嵌入类型 (Embedding Types)
    核心思想:针对不同的需求(语义捕捉、关键词匹配、存储效率、表示粒度),发展出不同特性的向量嵌入表示方法。

    • 可变维度 (Variable Dimensions):

      • 资源受限设备: 在边缘设备或内存有限的环境中使用低维前缀进行推理。

      • 多阶段检索: 先用低维嵌入进行快速粗筛,再用高维嵌入进行精确排序。

      • 自适应搜索: 根据查询的复杂度或对精度的要求选择合适的维度。

      • 应用原理: 允许嵌入向量的维度根据需求动态调整。例如,Matryoshka Representation Learning (MRL) 训练出的嵌入,其向量的前缀(如前 64 维、前 128 维)本身就是有效的、低维度的嵌入。这提供了在计算资源/延迟和表示精度之间的灵活权衡。


    • 应用方法: 使用支持可变维度的预训练模型(如某些基于 MRL 训练的模型)。在存储时可以存储完整嵌入,在查询或下游任务时根据需要截取不同长度的前缀使用。

    • 稀疏嵌入 (Sparse Embeddings):

      • 需要精确匹配术语、ID 或代码的搜索。

      • 混合搜索中的关键词检索部分, 与稠密嵌入互补。

      • 法律、医疗等需要精确术语检索的领域。

      • 应用原理: 主要捕捉词汇层面的信息,向量维度等于词表大小,只有对应文档中出现词语的维度才具有非零值(通常是该词的权重,如 BM25 分数或学习到的权重如 SPLADE)。擅长精确关键词匹配。


    • 应用方法: 使用 TF-IDF、BM25 算法计算生成;或者使用专门训练的稀疏表示模型(如 SPLADE)生成学习到的稀疏向量。存储和查询通常需要特定的数据结构(如倒排索引)。

    • 量化嵌入 (Quantized Embeddings):

      • 超大规模向量数据集: 当数十亿甚至更多的向量需要存储和检索时,内存和存储成本是主要瓶颈。

      • 需要低延迟查询的场景: 量化后的距离计算通常更快。

      • 内存受限的环境。

      • 应用原理: 通过降低向量中数值的精度(如 float32 -> int8 或 binary)或使用码本(如 PQ)来大幅压缩向量的存储大小,并加速距离计算(如 int8 计算更快,二进制的汉明距离计算极快)。这是一种有损压缩,需要在压缩率和精度损失之间做权衡。


    • 应用方法: 在向量数据库(如 Milvus, Qdrant)或库(如 Faiss)创建索引时选择支持量化的索引类型(如 IVF_PQScalarQuantizerIndexBinaryFlat)。需要配置量化参数(如 PQ 的 M 和 K,或目标位数 int8/binary)。通常在索引构建阶段完成量化过程。

    • 多向量嵌入 (Multi-vector Embeddings):

      • 段落检索 (Passage Retrieval): 当需要精确匹配查询中的特定短语或术语时,效果通常优于单向量表示。

      • 需要细粒度相关性判断的问答系统。

      • 对词语顺序或精确措辞比较敏感的搜索任务。

      • 应用原理: 与将整个文本(如句子、段落)压缩成单一向量不同,多向量方法为文本中的更小单元(如每个词或标记)生成单独的向量。检索时采用“后期交互”(Late Interaction)策略,即分别比较查询中每个词的向量与文档中每个词的向量,聚合这些细粒度的相似度分数,从而能更精确地捕捉词语匹配和上下文关系。


    • 应用方法: 使用支持多向量表示的模型(如 ColBERT)。需要专门的索引结构和查询逻辑来支持后期交互计算。相比单向量检索,计算量通常更大。

    • 稠密嵌入 (Dense Embeddings):

      • 语义搜索(核心应用): 理解用户意图,查找概念相关内容。

      • 文本聚类、分类、情感分析等 NLP 任务。

      • 推荐系统中的内容表示。

      • RAG 系统的语义检索部分。

      • 应用原理: 捕捉文本或数据的深层语义含义,而非表面词汇。向量维度相对较低(几百到几千维),大部分元素非零。通过深度学习模型在大量数据上学习得到,相似含义的对象在向量空间中距离接近。


    • 应用方法: 使用预训练的稠密嵌入模型(如 Sentence-BERT, Universal Sentence Encoder, OpenAI Ada embeddings 等)生成向量,存储在向量数据库中,使用余弦相似度等度量进行查询。

    • 二值嵌入 (Binary Embeddings):

      • 资源极其受限的环境: 如移动设备或嵌入式系统。

      • 对存储成本极其敏感的超大规模数据集。

      • 可以接受一定精度损失以换取极高速度的场景。

      • 应用原理: 量化的极端形式,将向量的每个维度压缩到仅 1 比特(0 或 1)。存储效率极高,向量间距离计算可以使用非常快速的汉明距离(计算对应位上值不同的数量)或 Jaccard 相似度。


    • 应用方法: 使用专门生成二值嵌入的模型或技术。需要使用支持二值向量和汉明距离的索引(如 Faiss 的 IndexBinaryFlat 或基于 LSH 的二值索引)。精度损失通常比 int8 或 PQ 量化更明显。



    9. 分块技术 (Chunking Techniques)
    核心思想:将大型文档或数据流切分成更小、更易于处理的单元(块),以适应模型处理限制(如上下文窗口)、优化检索效率和相关性。

    • 语义分块 (Semantic Chunking):

      • 应用原理: 尝试根据文本的语义内容来划分界限,目标是让每个块包含一个相对完整和连贯的思想或主题单元。这通常通过分析句子或段落间嵌入向量的相似度来实现,在相似度显著下降的地方进行切分。

      • 应用场景: 处理叙事性强、段落间逻辑联系紧密的文本(如文章、报告),希望 RAG 检索到的上下文尽可能在语义上完整。

      • 应用方法: 使用 NLP 库(如 spaCy)进行句子分割,计算相邻句子(或句子组)的嵌入相似度,设置一个相似度阈值或检测突变点来确定分块边界。一些框架(如 LlamaIndex)提供了实验性的语义分块器。

    • 递归分块 (Recursive Chunking):

      • 应用原理: 采用一组按优先级排列的分隔符(如 \n\n\n (空格), . 等),首先尝试用最高优先级的分隔符分割文本。如果分割后的块仍然太大,则对该块递归地使用下一个优先级的分隔符进行分割,直到块大小满足要求或没有更低优先级的分隔符可用。试图在控制大小的同时尽可能尊重文本的自然结构。

      • 应用场景: 处理具有一定结构(如段落、换行)但结构不完全规整的文本;在不知道文本具体结构时,提供一种相对健壮的分块方式。

      • 应用方法: 在 LangChain、LlamaIndex 等框架中是常用的默认或推荐方法。需要指定块大小(chunk_size)、块重叠(chunk_overlap)以及分隔符列表。

    • 基于 LLM 的分块:

      • 应用原理: 利用 LLM 对文本内容的理解能力来指导分块过程。可以通过精心设计的提示,让 LLM 直接将文本分割成语义连贯的块,或者识别出文本中的逻辑章节或主要议题作为分块依据。

      • 应用场景: 处理结构复杂、需要深度理解才能合理切分的文档(如法律合同、研究论文);追求最高质量语义块的场景。

      • 应用方法: 设计合适的 Prompt,调用 LLM API 进行分块。这通常比算法分块更慢且成本更高,需要仔细评估效益。

    • 固定大小分块:

      • 应用原理: 最简单的方法,按照固定的字符数或词元数(Token)来切割文本。通常会设置一个重叠(Overlap)量,让每个块的末尾部分与下一个块的开头部分内容相同,以减少信息在块边界被硬切断的风险。

      • 应用场景: 处理完全没有结构或结构信息不可靠的纯文本;实现简单快速,作为基线方法。

      • 应用方法: 直接按长度切割,设置 chunk_size 和 chunk_overlap 参数。需要注意不同语言字符和词元的差异。

    • 基于文档结构的分块:

      • 应用原理: 利用文档本身固有的结构标记(如 HTML 标签、Markdown 标题、JSON 键、PDF 书签或段落格式)作为分块的边界。

      • 应用场景: 处理格式良好、结构清晰的文档,如网页 (HTML)、Markdown 文件、代码文件、结构化的 PDF 报告。能最大程度保留原文的逻辑层次。

      • 应用方法: 使用相应的文档解析库(如 BeautifulSoup for HTML, PyMuPDF for PDF)提取结构信息和对应的内容块。例如,可以按 HTML 的 <p><div><h1> 等标签或 Markdown 的标题层级进行分块。


    10. 高级 RAG 技术 (Advanced RAG Techniques)
    核心思想:在基础 RAG 流程的各个环节(查询理解、数据准备、检索、生成)进行优化,以提升最终答案的准确性、相关性、可靠性和效率。


    • 推理与行动 (ReAct):

      • 应用原理: 让 LLM 不仅是被动地基于检索到的上下文生成答案,而是能够主动地规划和执行一系列“思考-行动-观察”的步骤来解决问题。行动可以包括调用外部工具,如搜索引擎、计算器、数据库查询 API 等。

      • 应用场景: 处理需要多步骤推理、需要外部实时信息或需要与外部系统交互才能回答的复杂查询。例如,“查找 X 公司最新的股价,并与 Y 公司比较”。

      • 应用方法: 使用支持 ReAct 模式的框架(如 LangChain Agents)或自行实现提示循环。需要为 LLM 提供可用的工具集及其描述,并设计能引导其进行 ReAct 推理的 Prompt。

    • 思维树 (ToT):

      • 应用原理: 允许 LLM 在推理过程中探索多个可能性分支。对于每一步,LLM 可以生成多个“想法”(可能的下一步或解决方案),然后对这些想法进行评估(可能通过自我反思或调用外部评估器),选择最有希望的分支继续探索,甚至可以进行回溯。

      • 应用场景: 解决需要探索性思考、没有唯一正确路径或需要评估多种方案的复杂问题或生成任务。在 RAG 中,可以用于探索查询的不同解释或评估多个检索到的上下文片段的组合。

      • 应用方法: 实现复杂的提示策略或使用专门的 Agent 框架来管理状态、生成和评估多个并发的思维路径。计算成本较高。

    • 思维链 (CoT):

      • 应用原理: 通过提示(如“一步一步地思考”)引导 LLM 在给出最终答案前,先输出其详细的推理步骤。这种显式的、分解的思考过程有助于 LLM 更准确地理解问题、利用上下文信息,并减少推理错误。

      • 应用场景: 提高 LLM 在需要逻辑推理、数学计算或复杂指令遵循的任务上的表现;在 RAG 中,帮助 LLM 更好地整合和利用检索到的上下文信息来构建答案。

      • 应用方法: 在给 LLM 的最终生成提示中加入引导其进行逐步思考的指令。也可以使用“零样本 CoT”(Zero-shot CoT,仅加指令)或“少样本 CoT”(Few-shot CoT,在提示中提供几个带有推理步骤的示例)。

    • 数据清洗:

      • 应用原理: RAG 的知识库质量直接影响检索和生成效果。“垃圾进,垃圾出”。清洗旨在去除噪声、错误和无关信息,提高数据质量。

      • 应用场景: RAG 系统的数据准备阶段,特别是当源数据来源多样、质量参差不齐时。

      • 应用方法: 使用正则表达式、脚本或专用库去除 HTML 标签、广告、页眉页脚、重复空格;进行拼写纠正、标准化日期格式、处理缺失值等。

    • 数据提取与解析:

      • 应用原理: 从各种原始格式(PDF, DOCX, HTML, PPT等)中准确地提取出可供处理的文本内容和元数据,并可能解析其结构。

      • 应用场景: RAG 知识库构建的第一步,处理非纯文本的源文件。

      • 应用方法: 使用 Python 库如 PyPDF2python-docxBeautifulSoupunstructured.io 等。对于扫描版 PDF 或图片中的文字,需要使用 OCR 工具(如 Tesseract, PaddleOCR)。

    • 数据转换:

      • 应用原理: 将提取和清洗后的数据转换为统一、规整的格式(如纯文本、Markdown、结构化 JSON),方便后续的分块、嵌入和 LLM 处理。

      • 应用场景: 确保 RAG 知识库内部数据格式的一致性。

      • 应用方法: 根据需要编写转换脚本,例如将提取的表格转换为 Markdown 格式,或将所有文本统一为 UTF-8 编码。

    • 嵌入模型微调:

      • 应用原理: 通用嵌入模型可能无法很好地理解特定领域的术语或概念间的细微差别。通过在目标领域的(查询,相关文档)对上进行微调,可以使嵌入模型更好地捕捉该领域的语义关系,从而提高检索精度。

      • 应用场景: 专业领域(如医疗、法律、金融、科学研究)的 RAG 系统,对检索相关性要求极高。

      • 应用方法: 准备领域相关的查询和对应相关/不相关文档的数据集,使用 sentence-transformers 等库对预训练嵌入模型进行进一步训练(通常使用对比损失、三重损失等)。

    • 距离阈值化:

      • 应用原理: 向量搜索返回的结果是按相似度(或距离)排序的。设定一个阈值,只保留相似度高于该阈值(或距离低于该阈值)的结果,可以过滤掉那些虽然在向量空间中相对较近,但实际上与查询可能并不相关的“噪声”结果。

      • 应用场景: 提高送入 LLM 的上下文的信噪比,避免无关信息干扰生成。

      • 应用方法: 在接收到向量数据库返回的 Top K 结果后,检查每个结果的相似度分数,只将分数超过预设阈值的结果传递给生成阶段。阈值需要根据经验或实验调整。

    • 提示工程:

      • 应用原理: LLM 的输出质量高度依赖于输入提示的质量。在 RAG 中,如何组织原始查询、如何呈现检索到的上下文、以及给出什么样的指令来引导 LLM 基于这些信息生成答案,都属于提示工程。

      • 应用场景: RAG 的生成阶段,是决定最终答案质量的关键环节。

      • 应用方法: 设计清晰、具体的提示模板。实验不同的上下文呈现方式(如编号列表、分隔符)、不同的指令措辞(如“根据以下信息回答问题”、“总结以下信息”)、是否要求引用来源等。

    • 上下文压缩:

      • 摘要: 使用另一个 LLM 对每个检索到的块进行摘要。

      • 选择性提取: 基于与查询的重叠度或相关性分数,只提取块中的关键句子。

      • 过滤: 移除重复或高度相似的块。

      • 使用如 LongLLMLingua 等专门的上下文压缩工具。

      • 应用原理: 检索到的上下文可能很多,超过 LLM 上下文窗口限制,或者包含冗余信息。压缩旨在减少上下文的长度,同时保留最重要的信息,以适应窗口限制、降低成本、提高 LLM 的专注度。

      • 应用场景: 当检索到的上下文过长或包含较多冗余时。


    • 元数据过滤:

      • 应用原理: 利用存储在向量数据库中与向量关联的元数据(如文档来源、创建日期、作者、类别标签等),在进行向量搜索之前或同时进行过滤。这可以极大地缩小搜索范围,提高效率和相关性。

      • 应用场景: 当用户查询隐含了对特定元数据的要求时(如“查找过去一周关于 A 公司的报告”);或者 RAG 系统需要从特定子集(如某个部门的文档)中检索信息时。

      • 应用方法: 在调用向量数据库查询接口时,同时传入元数据过滤条件。大多数现代向量数据库都支持此功能。

    • 查询路由:

      • 应用原理: 对于拥有多个知识库索引(可能对应不同领域、不同数据类型或不同更新频率)的复杂 RAG 系统,查询路由旨在根据用户查询的意图或内容,将其智能地导向最合适的索引或处理流程。

      • 应用场景: 大型企业级 RAG 系统;需要整合不同数据源(如文档库、数据库、API)的 RAG 应用。

      • 应用方法: 在 RAG 流程开始时增加一个查询分类步骤(可以使用简单的规则、关键词匹配,或用 LLM 进行意图识别),根据分类结果选择后续使用的索引和提示模板。

    • 数据预处理:

      • 应用原理: 这是构建高质量 RAG 知识库的基础性工作,涵盖了从原始数据到可供嵌入的干净、规整文本块的所有准备步骤。

      • 应用场景: 所有 RAG 系统构建的初始阶段。

      • 应用方法: 综合运用数据清洗、提取、解析、转换、分块等技术,形成一套完整的数据处理流水线。

    • 自动裁剪 (Autocut):

      • 应用原理: (推测)一种自动化的方法,用于在检索后、生成前,进一步裁剪或过滤掉被判定为与查询核心意图不太相关的上下文信息,即使它们在向量空间中距离较近。可能基于更复杂的规则或模型来判断信息的实际贡献度。

      • 应用场景: 进一步提纯上下文,减少 LLM 处理无关信息的负担。

      • 应用方法: 可能是一个特定的库、算法或服务实现的功能。具体方法未知,但目标是优化上下文的信噪比。

    • 查询重写:

      • 应用原理: 用户的原始查询可能模糊、有错别字、过于复杂或不符合知识库的表达习惯。查询重写使用 LLM 或其他技术来优化、澄清或分解原始查询,使其更适合后续的检索(特别是向量检索)和生成。

      • 应用场景: 改善对非结构化、自然语言查询的处理效果;处理复杂或多意图查询。

      • 应用方法: 在检索前,将用户查询输入一个 LLM,并提示它进行重写、纠错、澄清或分解(如 HyDE - Hypothetical Document Embeddings,生成一个假设性答案再对其嵌入进行搜索;或 Step-back Prompting,先生成更泛化的问题再检索)。

    • 查询扩展:

      • 基于词典: 使用 WordNet 等同义词词典进行扩展。

      • 基于 LLM: 让 LLM 生成与查询相关的词语或短语。

      • 嵌入空间扩展: 查找查询向量附近的其他词向量进行扩展。

      • 将扩展后的词语加入原始查询进行检索(可能需要调整权重)。

      • 应用原理: 为了提高召回率,特别是当用户查询较短或未包含所有相关术语时,可以自动向原始查询中添加同义词、相关概念或术语。

      • 应用场景: 当担心初始查询可能无法检索到所有相关文档时(召回率优先)。



    (以上内容由我和AI协作生成)

    53AI,企业落地大模型首选服务商

    产品:场景落地咨询+大模型应用平台+行业解决方案

    承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

    联系我们

    售前咨询
    186 6662 7370
    预约演示
    185 8882 0121

    微信扫码

    添加专属顾问

    回到顶部

    加载中...

    扫码咨询