文本相似度计算
文本相似度计算
基准方法:文本->词->嵌入->平均池化->余弦相似度
Word Mover’s Distance
rank_bm25
无监督短文本匹配1. TF-IDF Term Frequency-Inverse Document FrequencyTF-IDF(Term Frequency-Inverse Document Frequency)是一种在信息检索和文本挖掘中广泛使用的加权技术,用于评估一个词在一个文档或语料库中的重要性。TF-IDF算法结合了两个统计测量:词频(TF)和逆文档频率(IDF),来计算一个词的权重。
词频(TF, Term Frequency)
词频是指一个词在文档中出现的频率。一个词在文档中出现得越频繁,其TF值就越高,表明这个词对该文档的内容可能越重要。然而,仅仅使用词频作为权重是有缺陷的,因为常见的词汇(如冠词、介词等)会获得较高的权重,尽管它们对于文档的主题贡献不大。
TF的计算公式可以表示为:$$ \text{TF}(t, d) = \frac{\text{词 } t \text{ 在文档 } d \text ...
PG Vector
Getting StartedEnable the extension (do this once in each database where you want to use it)
1CREATE EXTENSION vector;
Create a vector column with 3 dimensions
1CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
Insert vectors
1INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');
Get the nearest neighbors by L2 distance
1SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
Also supports inner product (<#>) and cosi ...
Gen AI
虽然 LLM 提供了很大的潜力,但你也应该谨慎。
LLM 的核心是经过训练来预测序列中的以下单词。
这些单词基于训练数据中其他文本的模式和关系。这些训练数据的来源通常是互联网、书籍和其他公开可用的文本。这些数据的质量可能有问题,也可能是不正确的。培训发生在某个时间点,它可能无法反映世界的当前状态,也不会包含任何私人信息。
LLM 经过微调以尽可能有用,即使这意味着偶尔会产生误导性或毫无根据的内容,这种现象称为幻觉。
例如,当被要求“描述月亮”时,LLM可能会回答“月亮是由奶酪制成的”。虽然这是一句俗语,但事实并非如此。
修复幻觉提供额外的上下文数据有助于为 LLM 的响应奠定基础并使其更加准确。
知识图谱是一种向 LLM 提供额外数据的机制。知识图谱中的数据可以指导 LLM 提供更相关、更准确和更可靠的响应。
虽然LLM使用其语言技能来解释和响应上下文数据,但它不会忽视原始训练数据。
您可以将原始训练数据视为基础知识和语言能力,而上下文信息则在特定情况下提供指导。
这两种方法的结合使 LLM 能够产生更有意义的响应。
避免幻觉LLM 可以“编造”。LLM 旨在根据它们在大量数据中识别 ...
概率论
条件概率是指在给定某个条件下,某个事件发生的概率。用于描述事件之间的依赖关系。假设我们有两个事件 A 和 B,其中事件 A 是我们感兴趣的事件,事件 B 是某个条件。条件概率表示在已知事件 B 发生的情况下,事件 A 发生的概率,记作 $P(A|B)$。 条件概率的计算公式如下: $$ P(A|B) = \frac{P(A \cap B)}{P(B)} $$ 其中,$P(A \cap B)$ 表示事件 A 和事件 B 同时发生的概率,称为事件 A 与事件 B 的交集。$P(B)$ 表示事件 B 发生的概率。
条件概率的计算可以通过已知的概率和事件之间的关系来进行推导。它可以帮助我们理解事件之间的依赖关系,并在实际问题中进行推断和决策。
条件概率在很多领域都有广泛的应用,例如在机器学习中,条件概率可以用于建模和分类;在信息论中,条件概率可以用于计算熵和互信息等。 需要注意的是,条件概率的计算需要满足一些前提条件,例如事件 B 的概率不能为零,事件 A 和事件 B 之间应该是独立或有一定的关联性等。
联合概率是指多个事件同时发生的概率。在概率论中,联合概率是一个重要的概念, ...
LLM Hallucination
123456789101112131415161718192021222324mindmap root((幻觉)) 幻觉是什么? 为什么出现幻觉? 如何检测幻觉? (检索增强评估) 数据集 FactualityPrompt 指标 FActScore SAFE FacTool (基于采样的检测) (未知知识的校准)
幻觉是什么?模型输出是捏造的,而不是以所提供的上下文或世界知识为基础的情况。
上下文中幻觉:模型输出应与上下文中的源内容一致。外在幻觉:当模型不知道一个事实时,它应该说不知道。
为什么出现幻觉?预训练数据,过时、丢失或不正确
微调使用的新数据跟预训练数据不相容
如何检测幻觉?检索增强评估基准数据集 FactualityPrompt
幻觉的评估指标:
幻觉 NE(命名实体)错误:使用预训练实体检测模型和文档级接地,此指标测量未出现在真实文档中的检测到的命名实体的比例。
蕴涵比率:使用在MNLI和句子级知识基础上微调的RoBERTa模 ...
Tokenizer
Tokenizer在NLP中,tokenizer是一个软件工具或函数,用于将文本字符串分割成更小的单元,这些单元被称为“tokens”。这些tokens可以是单词、标点符号、数字或任何有意义的文本单元,具体取决于tokenizer的设计和目标应用场景。例如,一个简单的空格分隔的tokenizer会将句子分割成单个的单词。
Tokenization是文本预处理的第一步,几乎所有NLP任务都需要这一步骤,包括但不限于机器翻译、情感分析、文本分类、命名实体识别(NER)、问答系统等。
Tokenizer可以根据不同的语言特性、语法结构和任务需求进行定制。例如:
基础分词器:仅仅基于空格或标点符号分割文本。
高级分词器:考虑连字符、缩写、数字和标点符号,甚至能处理复合词。
子词分词器:如Byte Pair Encoding (BPE),WordPiece,SentencePiece,它们将单词分割成子词单位,有助于处理未见过的词汇。
预训练模型的分词器:如BERT、RoBERTa、GPT等模型自带的分词器,它们通常使用子词分词技术,并且包含特殊标记如[CLS]、[SEP]、[PAD]等,用于 ...
Classic NLP
NLP 是一门研究如何使计算机能够理解、处理和生成人类语言的学科。
基本概念:
语言模型:用于对语言的概率进行建模,包括n-gram模型、神经网络语言模型等。
分词:将连续的文本切分成有意义的词语。
词性标注:为文本中的每个词语标注其词性,如名词、动词、形容词等。
命名实体识别:识别文本中的具体实体,如人名、地名、组织机构等。
语义角色标注:对句子中的每个词语进行语义角色的标注,如施事者、受事者等。
基本技术:
文本预处理:包括分词、去除停用词、词干化等,用于清洗和规范化文本数据。
文本分类:将文本分为不同的类别或标签,如情感分类、主题分类等。
信息抽取:从文本中提取结构化的信息,如实体关系、事件等。
机器翻译:将一种语言的文本翻译成另一种语言的文本。
问答系统:根据用户的问题,从文本中找到相关的答案。
对话系统:与用户进行自然语言交互,实现智能对话。
应用场景:
搜索引擎:通过分析用户的查询意图,提供相关的搜索结果。
情感分析:分析文本中的情感倾向,如正面、负面或中性。
社交媒体分析:分析社交媒体上的用户评论和观点。
机器翻译:实现跨语言的文本翻译,如中英互译。
语音识别 ...
向量
向量的本质从几何角度来看,向量可以表示空间中的一个有向线段,具有大小(长度)和方向两个属性。向量通常用箭头表示,箭头的方向表示向量的方向,箭头的长度表示向量的大小。
从代数角度来看,向量可以表示为具有一定结构的有序数组或元组。例如,一个二维向量可以表示为一个包含两个实数的有序对(x,y),而一个三维向量可以表示为一个包含三个实数的有序三元组(x,y,z)。在代数中,向量可以进行加法和数乘等运算,从而构成向量空间。
向量运算的本质可以从几何和代数两个角度来理解。
从几何角度来看,向量运算的本质在于描述和操作空间中的位移、方向和力等概念。
向量的加法可以看作是将两个位移或力合成为一个新的位移或力,
向量的减法可以看作是将一个位移或力分解为两个部分。
数乘可以改变向量的大小和方向,从而实现缩放和反向的效果。
向量的数量积可以计算两个向量之间的夹角和长度关系,
向量的向量积可以计算两个向量所张成的平行四边形的面积和垂直关系。
从代数角度来看,向量运算的本质在于定义和操作向量空间中的元素。
向量的加法和减法定义了向量空间中的加法运算和逆运算,使得向量空间成为一个加法群。
数乘定义了向量空 ...
zsh
1sudo pacman -S zsh
1sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
1sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
1git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
1ZSH_THEME="powerlevel10k/powerlevel10k"
123git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zs ...
RAG Retrieval Method
RAG Methords1. 知识预处理:知识源即各种数据、文档(json、pdf、txt…),将其分割成块(chunk),使用embedding算法将每个块编码为词向量,将词向量存储起来并建立索引以便快速查找。
1.1 embedding算法通常将高维数据映射到低维空间,以便更好地表示数据的特征使得可以使用语义相似度衡量句子的相似性。
数值相似的embedding在语义上也近似。假设我们有一个序列 $x=[x_1,x_2,…,x_T]$ , 其中$T$ 是序列的长度, $x_t$是序列中的第 $t$ 个元素。我们的目标是学习一个映射 $f$ ,将序列 $x$ 映射为一个固定大小的向量 v,即 $v=f(x)$。
单词的嵌入不是静态的,还取决于单词周围的上下文,因此我们使用BERT,它能够动态的基于上下文计算语义值,还捕捉到文档的深层语义信息:$v=BERT(x)$
2. 向量存储和查询知识源有不同格式,我们基于不同格式选择存储方式,大致可分为两类:
2.1 文档存储几乎适用于存储所有的文档数据
123456doc_store = DocStore() ...