首页 > 其他分享 >Kernel Memory 入门系列: Embedding 简介

Kernel Memory 入门系列: Embedding 简介

时间:2023-12-19 09:04:30浏览次数:39  
标签:Kernel 关键词 用户 文档 Embedding Memory 我们 向量

Kernel Memory 入门系列: Embedding 简介

RAG模式 其实留了一个问题。

我们对于的用户问题的理解和文档的检索并没有提供合适的方法。
Alt text

当然我们可以通过相对比较传统的方法。

例如对用户的问题进行关键词提取,然后通过关键词检索文档。这样的话,就需要我们提前对文档做好相关关键词的标注,同时也需要关键词能够覆盖到用户可能的提出方式以及表达方法。这样的话,就需要我们对用户的问题有一个很好的预测。用户也需要在提问的时候,能够按照我们的预期进行提问。我们和用户双向猜测,双向奔赴,如果猜对了,那么就可以得到一个比较好的结果。如果猜错了,结果难以想象。

那么有没有一种方法,能够让我们不需要对用户的问题进行预测,也不需要对文档进行关键词标注,就能够得到一个比较好的结果呢?

这个答案就是 Embedding。

Embedding 是什么

Embedding 是一种将高维数据映射到低维空间的方法。在这个低维空间中,数据的相似性和原始空间中的相似性是一致的。这样的话,我们就可以通过低维空间中的相似性来进行检索。

通俗的理解,大语言模型基于大量的文本数据进行训练,得到了一个高维的向量空间,我们可以认为这是一个语义的空间。在这个语义空间中,每一个词或者每个句子都有一个对应的空间坐标。虽然这个坐标系的维度是非常高的,起码都是上百甚至上千的维度,但是我们仍可以想象在二维或者三维空间中的点去理解这个坐标。

然后,我们就可以通过这个向量来判断两段文字是否相似。如果两段文字的向量越接近,那么这两个词的语义就越接近。例如, 的向量就会比 苹果 的向量更加接近。

Alt text

这个空间坐标和模型的关系更加密切,模型越强大,对于语义的理解越深刻,那么这个空间坐标的效果就越好。所以,寻找或者训练一个好的Embedding模型对于实现一个好的检索系统是非常重要的。

使用Embedding进行匹配

有了Embedding的结果之后,我们就可以看如何使用Embedding进行匹配了。

首先我们需要对用户的提问和我们的文本进行Embedding,得到对应的向量。

通过计算问题的向量与文本的向量的相似性,通常是余弦相似度计算,我们就可以得到一个排序的结果。这个排序的结果就是我们的检索结果。

根据实际模型的表现,选择合适的相似度阈值,然后就可以找到最为相似的内容了。

Alt text

参考

  1. 嵌入基础知识
  2. What are Embeddings?

标签:Kernel,关键词,用户,文档,Embedding,Memory,我们,向量
From: https://www.cnblogs.com/xbotter/p/kernel_memory_embedding.html

相关文章

  • 一句话解决加载模型时的CUDA out of memory
    在加载模型一行后加上max_memory即可,超出显存后会自动移到内存。model=AutoModel.from_pretrained('your_model',trust_remote_code=True,max_memory={0:"6GiB","cpu":"10GiB"})记录一下,备忘。 本文来自博客园,作者:星如雨yu,转载请注明原文链接:https://www.cnblogs.com......
  • extract_triton_kernels.py
    importsysfilename=sys.argv[1]withopen(filename,'r')asf:lines=f.readlines()defextract_info(line):line=line.split()name=line[0].strip()self_gpu_time=line[6].strip()num_of_calls=int(line[10].strip())......
  • linux kernel modify printk buf size
    linuxkernelmodifyprintkbufsizeconfigureCONFIG_LOG_BUF_SHIFTmodifycode:wyk@ubuntu:~/soc/linux$gitdiffkernel/printk/printk.cdiff--gita/kernel/printk/printk.cb/kernel/printk/printk.cindexfd337bf9b..aaa98a8eb100644---a/kernel/printk/......
  • UBUNTU 18.04.6 的Quartus里面转换sof到rbf文件在uboot阶段加载时出错或者在kernel启
    参考Intel的SD卡image设计的教程(https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide) 确认DE10-Nano的MSEL设置为01010,插上SD卡 给DE10-Nano上电,发现可以启动,但卡死在这里不动了: 如果只测试Preloader和uboot的时候也有这个错误: ......
  • 论文笔记: Attributed Graph Clustering: A Deep Attentional Embedding Approach
    论文笔记:AttributedGraphClustering:ADeepAttentionalEmbeddingApproach中文名称:属性图聚类:一种深度注意力嵌入方法论文链接:https://arxiv.org/abs/1906.06532背景:​ 图聚类是发现网络中的社区或群体的一项基本任务。最近的研究主要集中在开发深度学习方......
  • Linux kernel memory barriers 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/wrappers/memory-barriers.htmlLinux内核内存屏障免责声明本文档不是一个规范;它故意(为了简洁)和无意(因为是人类)不完整。本文档旨在指导如何使用Linux提供的各种内存屏障,但如果有任何疑问(而且有很多),请咨询。一些疑问可能通过参......
  • Kernel Maintainer Handbook 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/maintainer/index.htmlKernelMaintainerHandbook这份文档是为内核维护者编写的指南的谦逊开端。这里还有很多工作要做!请随时提出(并编写)对这份指南的补充。功能和驱动程序维护者责任选择维护者不遵守规定配置Git创建提交链......
  • 无涯教程-Erlang - memory函数
    返回一个列表,其中包含有关由Erlang动态分配的内存的信息,该列表的每个元素都是一个元组{Type,Size},第一个元素Type是描述内存类型的原子。memory-语法memory()memory-返回值返回一个列表,其中包含有关由Erlang仿真器动态分配的内存的信息。-module(helloLearnfk).-export......
  • kettle从入门到精通 第二十三课 kettle carte 错误(java.lang.OutOfMemoryError: GC ov
     1、Couldnotemitbufferduetolackofrequests(无法发出缓冲区,因为请求不足。)原因有两点:1)消费者处理数据能力较弱,如表输出步骤。2)消费者没有处理数据,如传递的数据中有字段type=1的数据,这种情况没有处理。解放方案:针对1)采用多线程处理和开启批量提交,如下图所示批量插入......
  • The IDE is running low on memory
    WebStorm内存不足提示:TheIDEisrunninglowonmemoryandthismightaffectperformance.Pleaseconsiderincreasingtheheapsize.翻译:IDE内存不足,这可能会影响性能。请考虑增加堆大小。手动改大......