名词解释:
Prompt :提示词,是一个非常关键的概念,它指的是用户输入的文本或指令,用于引导语言模型生成相应的回答或执行特定任务。
Prompt Engineering:(提示工程) 是一种通过设计和优化输入提示(Prompt)来引导大语言模型(LLM)生成高质量、准确且符合期望的输出的技术。它 利用模型的上下文学习能力,通过精心构造的指令来微调模型的行为,而无需改变模型的参数。提示工程的核心在于 选择合适的词语、结构和上下文,以确保模型能够理解用户的需求并生成相关的回答。
Base Model:有时又叫Pre-trained Model,预训练模型是指在大量无监督数据上经过预训练阶段得到的模型。它通过自监督学习(如掩码语言建模、下一句预测等任务)学习语言的通用知识,包括语法、语义、上下文关系等 。
Agent:(智能体) 是一种基于大型语言模型(LLM)构建的智能实体,它能够自主感知环境、做出决策并执行任务。它以目标为导向,能够观察环境、使用工具,并通过感知、思考与行动的紧密结合来完成复杂任务,Agent 的核心能力包括以下四个方面:
-
规划(Planning):拆解复杂任务为可执行的子任务,并评估执行策略。
-
记忆(Memory):存储和回忆信息,包括短期记忆(会话上下文)和长期记忆(用户特征、业务数据等)。
-
工具(Tools):通过调用外部工具(如API、插件)来扩展自身能力。
-
行动(Action):将规划和记忆转化为具体输出,包括与外部环境的互动或工具调用。
RAG:(Retrieval-Augmented Generation,检索增强生成) 是一种结合信息检索技术和大型语言模型(LLM)的框架,旨在通过检索外部知识库中的相关信息来增强模型的生成能力,实现过程。
-
数据准备:提取、分割、向量化文档,并存储到向量数据库。
-
检索阶段:根据用户查询,从数据库中检索相关文档。
-
生成阶段:将检索结果与用户查询结合,输入到LLM中 生成回答。
Embedding:(嵌入)是一种将单词、句子或文档转换为低维向量的技术,通过这种方式,语义相近的词或句子在向量空间中彼此靠近。其核心目的是捕捉数据的语义或特征相似性,从而让机器能够更高效地处理和分析文本信息。
Qdrant:是一个开源的向量数据库,用于高效存储和检索向量数据,支持快速的相似性搜索,适用于语义搜索、推荐系统和图像检索等场景。它的优点是性能出色、延迟低、资源开销小,易于部署和使用,同时支持灵活的存储选项和多种距离度量。不过,它在大规模数据集上的扩展能力可能不如一些竞争对手,且生态系统相对较小。类似的向量数据库还包括 Milvus 和 Weaviate。
LangChain:是一个开源框架,用于构建基于大语言模型(LLM)的应用程序。它通过 提供模块化的组件和链式结构,帮助开发者更轻松地开发聊天机器人、文档问答、知识库等应用。其核心功能包括组件化开发、内存管理、与多种语言模型兼容,以及支持生产化部署。
WorkFlows:工作流开发是一种利用大语言模型(LLM)来自动化处理复杂任务的方法。它把一个大任务拆分成多个小任务,然后按照一定的顺序和规则,让大模型逐步完成这些小任务,常用开发工具比如 Dify 和 LlamaIndex。
Fine-tuning:大模型的 Fine-tuning(微调)是指 在已有的大规模预训练模型基础上,通过对标注数据进行训练,进一步优化模型的表现,以适应特定任务或场景的需求。
LoRA:(Low-Rank Adaptation)是一种用于大模型微调的技术。它的核心思想是通过低秩分解来模拟参数的改变量,从而以极小的参数量实现大模型的间接训练。具体来说,LoRA在大模型的某些层中插入可训练的低秩矩阵,这些矩阵在训练过程中调整,而原始模型的大部分参数保持不变。这样既保留了预训练模型的强大能力,又能够针对特定任务进行高效的微调。
Benchmark:是一种用来 评估模型性能的标准测试方法。通过将模型在一系列预定义的任务或数据集上进行测试,可以客观地衡量模型的能力,并与其他模型进行比较。
Hugging Face:是一家专注于自然语言处理(NLP)的人工智能公司,同时也指代其开发的开源机器学习库。它以提供简单易用的API和丰富的预训练模型而闻名,广泛应用于自然语言处理任务,如文本生成、情感分析、机器翻译等。Hugging Face 的核心产品是其 Transformers 库,它支持多种流行的预训练模型(如BERT、GPT等),并提供方便的接口供开发者快速部署和使用这些模型。
LLM Inference Framework:大语言模型推理框架,主要用于优化和加速大模型的推理过程,提高响应速度和吞吐量,同时降低资源消耗。它们适用于需要高效处理大量请求的场景,比如在线聊天机器人、智能客服、内容生成服务等。
- vLLM 是一个高性能的推理框架,通过 PagedAttention 技术高效管理 GPU 内存,显著提升推理速度和吞吐量。它适用于对响应速度和吞吐量要求极高的场景,比如大规模在线服务或高并发的聊天机器人。其优点是高吞吐量和内存高效,缺点是硬件要求较高,且不支持适配器。
- Hugging Face TGI 是一个优化了推理性能的框架,支持多 GPU 和多节点扩展,易于部署和使用。它适合快速部署和扩展的企业级应用,比如大规模文本生成或内容推荐。优点是启动简单、优化技术先进且支持量化,缺点是性能略逊于 vLLM,且缺乏对适配器的支持。
Chain of Thoughts:(思维链) 是一种用于提高大语言模型推理能力的技术。它通过让模型在生成答案之前,先逐步展示其思考过程,从而帮助模型更准确地解决问题。这种方法类似于人类在解决问题时的逐步推理过程,可以帮助模型避免错误,提高答案的准确性和可靠性。
Few-shot learning:(少样本学习)通过少量示例(如2-5个)理解任务要求,然后生成符合任务需求的输出。比如给模型几个翻译示例,它就能按照这个风格进行翻译。
One-shot learning:(单样本学习)仅通过一个示例就能理解任务并生成输出。比如给模型一个写作示例,它就能按照这个风格进行创作。zero-shot learning 一个例子不给。
Trunks:在大模型文本切分的语境中,通常指的是将长文本分割成多个较短的片段(即“块”或“分段”)。这些片段被称为“trunks”,是文本处理过程中的一种中间产物,用于帮助大语言模型更好地处理超出其上下文长度限制的长文本。通过将长文本分割成多个trunks,模型可以逐个处理这些较短的片段,从而提高处理效率并保持上下文的连贯性。
FAQ库:(Frequently Asked Questions库) 是一个专门用于存储和管理常见问题及其答案的数据库或知识库。它通常用于客户支持、智能客服系统或知识管理系统中,帮助快速解答用户可能频繁提出的问题。
Vector Similarity:向量相似度是大语言模型中用于衡量文本语义相似性的技术。它通过将文本转换为向量,并计算这些向量之间的距离或相似度(如余弦相似度或欧氏距离),帮助模型理解输入文本的语义关系。这种方法在信息检索、推荐系统和自然语言处理中广泛应用,能够快速找到与目标文本最相关的片段或内容。
Hallucination:(幻觉) 是大语言模型(LLM)中一个常见的现象,指的是模型生成的内容看似合理但实际上与事实不符、逻辑混乱或完全虚构。
Self-consistency:(自洽性) 是一种用于提高大语言模型准确性的技术。本质上,它通过多次运行模型生成多个答案,然后通过融合这些答案(例如采用少数服从多数的原则)来确定最终结果。这种方法可以减少模型的幻觉和错误,提高输出的稳定性和可靠性。
Inverted Index:(倒排索引) 是一种用于信息检索的高效数据结构,广泛应用于搜索引擎、全文检索系统和数据库中。它的核心思想是将文档中的单词与文档的映射关系反向存储,即 从“文档到单词”的映射转变为“单词到文档”的映射。
Product Quantization:PQ算法(乘积量化) 是一种模型优化技术,属于量化(Quantization)的范畴。量化是将模型的参数和激活值映射到较低的位数(例如从32位浮点数降至8位整数),以减少模型的存储需求和计算复杂度。
Self-Querying Retrieval:(自查询)LangChain 的 Self-Querying Retrieval 方法是一种结合自然语言处理和结构化查询的检索技术。它通过使用 LLM(大型语言模型)链 将自然语言查询转换为结构化查询,然后将这些查询应用于底层的向量存储(VectorStore),从而实现对文档内容的语义相似性比较以及对文档元数据的过滤。这种方法不仅能够根据语义相关性检索文档,还能根据用户查询中提取的元数据过滤条件精准筛选结果,提高了检索的灵活性和准确性。
常用的大模型梳理:开源的中文大语言模型-github
一 Agent 模块解读
1.1 基于已有大模型的 Agent
- App > prompt(提示词)> GPT4
- App > prompt (做文档,结合向量数据库) > GPT4
然后用得到的Agent进行交互,用来聊天或者给接口。 (给网址,然后写网站,给子模型)
1.2 提示词的构成
指示(Instruction): 描述要让它做什么?
上下文(Context): 给出与任务相关的背景信息
例子(Examples): ,给出一些例子,让模型知道怎么回复
输入(Input): 任务的输入信息
输出(Output Format): 输出的格式,想要什么形式的输出?
1.3 文本切分
文本切分(Text Splitting) 是将长文本分割成较短片段的过程,以便大语言模型处理。以下是几种常见的文本切分方式:
-
固定大小切分,将文本按照固定的长度分割成多个片段。这种方法简单高效,但可能会在句子或段落中间切断文本,导致上下文信息不完整。
-
基于句子的切分,以句子为单位进行切分,确保每个片段都是完整的句子。这种方法可以更好地保留上下文信息,适用于需要保持语义完整性的场景,但某些句子可能过长,超出模型的上下文限制。
-
滑动窗口切分,通过滑动窗口的方式将文本分割成多个片段,每个片段之间有一定重叠部分,以减少上下文信息的丢失。这种方法适用于需要高语义连贯性的场景,但会增加片段数量和计算成本。
-
根据内容切分,根据文本的内容和语义结构进行切分,例如按照段落、章节或主题进行分割。这种方法可以更好地保留文本的结构和语义信息,适合处理结构化文本,但需要更复杂的逻辑来识别切分点。
1.4 常见的向量数据库搜索方式
- KNN(K-Nearest Neighbors)搜索,KNN搜索是通过计算查询向量与数据库中所有向量的距离,找出距离最近的K个向量。它简单直接,搜索结果精确,但计算量大,适合数据量较小且对精度要求高的场景。
- ANN(Approximate Nearest Neighbors)搜索,ANN搜索是一种近似最近邻搜索方法,通过构建索引(如HNSW、LSH、IVF-PQ等)来加速查询,以牺牲少量精度为代价换取更高的搜索速度,适合大规模数据集的高效搜索。
- HNSW(Hierarchical Navigable Small World)搜索,HNSW 通过构建多层导航图来索引向量,搜索时从高层逐步向下层逼近,快速找到与查询向量相近的结果,兼具高效率和较好的精度,适合大规模静态数据集的相似性搜索。
- 混合搜索,混合搜索结合多种搜索方法,如将向量搜索与传统数据库查询、全文搜索等结合,能够满足复杂场景下的多样化查询需求,兼顾效率和功能。
1.5 传统推荐算法
- 基于内容的推荐:基于内容的推荐是通过分析用户过去喜欢的物品特征,找到具有相似特征的其他物品进行推荐。它依赖于物品的属性(如文本、标签、特征向量等),通过计算用户兴趣与物品特征的相似度来生成推荐结果。这种方法的优点是推荐可解释性强,能适应新用户或新物品,但推荐结果可能较为单一,且对特征提取的质量要求较高。
- 基于协同过滤的推荐:基于协同过滤的推荐是通过分析用户之间的行为相似性或物品之间的关联性来进行推荐。它不依赖物品内容,而是根据用户的历史行为(如评分、购买等)来发现用户或物品之间的相似性。用户-用户协同过滤会推荐与目标用户兴趣相似的其他用户喜欢的物品;物品-物品协同过滤则会推荐与用户已喜欢的物品相似的其他物品。这种方法能自动发现用户的潜在兴趣,提供个性化推荐,但在冷启动和数据稀疏性问题上表现较弱,且计算复杂度较高。
- 结合LLM的推荐系统:LLM抽取标签,LLM可以用于抽取文档或物品的关键信息,如标签、关键词或主题。这种方法能够帮助系统更好地理解内容,进而生成更精准的推荐。LLM在排序 方面主要应用于重排序(Reranking)阶段,即在初步检索出候选文档后,利用LLM对这些候选文档进行重新排序,以提高结果的相关性。