惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CERT Recently Published Vulnerability Notes
F
Fortinet All Blogs
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
量子位
博客园 - 聂微东
S
SegmentFault 最新的问题
月光博客
月光博客
爱范儿
爱范儿
罗磊的独立博客
博客园_首页
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
G
GRAHAM CLULEY
大猫的无限游戏
大猫的无限游戏
K
Kaspersky official blog
小众软件
小众软件
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
美团技术团队
T
The Blog of Author Tim Ferriss
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
C
Cyber Attacks, Cyber Crime and Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cisco Blogs
P
Proofpoint News Feed
PCI Perspectives
PCI Perspectives
Know Your Adversary
Know Your Adversary
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
T
Tor Project blog
S
Security Affairs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Vercel News
Vercel News
博客园 - Franky
IT之家
IT之家
Security Archives - TechRepublic
Security Archives - TechRepublic
AI
AI
O
OpenAI News
N
News and Events Feed by Topic
Y
Y Combinator Blog
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog

博客园 - ace--碳水化合物

m1 曲线相关 曲线 不等式 抛硬币 错位排列"(全错位)问题 11 1 两圆阴影面积 English1 Tidio 官方帮助中心 ERP 相关系统介绍 蝉翼定理 选配法 利润最大化公式 写在失业的一段话 排列组合-组合 在线简历 概率论与数理统计学习章节 绝对值 比例五大定理 算术平均值与几何平均值 等价符号 公因数与最大公因数 容斥原理 英语2026 机器学习,深度学习,强化学习 分别是什么以及区别是什么 深度学习 监督学习 FAQ IVR TTS选择 k 近邻算法 kaldi 平稳核函数(stationary kernel) Karush-Kuhn-Tucker 条件 凸二次规划(convex quadratic programming) FunASR+FreeSwitch做坐席客服系统记录 freeswitch原理图 客服系统,第三方平台,对话转录音,这些可以不依赖第三方做么 STUN服务器 Gun.js原理 游戏升级记 10 OBB 边界问题 关于yolo26是否可以通过结合java开发 opencv和yolo是一回事情吗 pytorch TorchVision - ace--碳水化合物 PyTorch 和 FashionMNIST 的关系 java record 游戏升级记 9 VibeVoice实现90分钟、多角色播客生成,拓展语音合成新边界 同 WiFi 下用 Claude Code 控制另一台 Windows 电脑 Numpy 1 游戏升级记 8 开源claudecode前端 github star 9k+ 向量数据库skill 游戏升级记 7 游戏升级记 6 关系型数据库,向量数据库,ES,缓存,列式数据库,时序数据库,图数据库等的区别和共同点列举table 多Agent可视化 Agent设计模式 中文 Hermes+Obsidian+LLM wkii,构建AI知识库 Claude Code 前端工程泄露代码开源 游戏升级记 5 ai记忆 游戏升级记 4 游戏升级记 3 游戏升级记 2 AI学习路线 关于hermes agent安装 1 游戏升级记 1 代码迷踪 十三 代码迷踪 十二 ai智能体工程 Rust vs Go 微信小程序实名认证 怎样制作一个街机游戏 跟Claude code说 深入思考 它会思考更深入. googlebusiness profile设置统一白名单的操作,要弹窗模式的 该怎样利用ollama自己训练一个编程大模型 中华AI智能体编程一站式基站构想 打包网站到exe和app 识别的内容一般是试题模板的题号和手写的答题答案(数字) opencv怎么训练 在线SaaS系统做接口版本滚动更新 stripe相关支付流程 流程示意图 error: linker `link.exe` not found | = note: program not found - rust 给我一份关于stripe平台的使用开发说明 c++学习记20260219 奥数-平面几何经典定理 奥数-组合数学 奥数-几何 奥数-代数 奥数-数论
Rag 1
ace--碳水化合物 · 2026-05-03 · via 博客园 - ace--碳水化合物

image

image

image

image

image

image

除了微调,还有一种模式就是知识库,用来增强大模型信息检索的能力,我们称之为检索增强生成(RAG),这是目前非常流行的一种做法,知识库模式相比于微调有 2 个好处。

- 知识准确:先把知识进行向量化,存储到向量数据库里,使用的时候通过向量检索从向量库把知识检索出来,这样可以确保知识的准确性。

- 更新频率快:当你发现知识库里的知识不全的时候,可以随时补充,不需要像微调一样,重新跑微调任务、验证结果、重新部署等。

image

1~7 是文档完成向量化存储的过程,8~15 是知识库检索的过程。 先简单了解一下“向量”这个概念。在计算机科学和数学中,向量是由一系列数字组成的数组,这些数字可以表示任何东西,从物理空间的方向和大小到商品的特性和用户偏好等。

相似度计算
比如,在评价一部电影时,你给它的评分包括剧情 8 分、特效 7 分、演技 9 分、音乐 6 分。这四个评分点就可以构成一个向量 [8, 7, 9, 6]。在这个向量中,每一个维度都代表了电影的一个属性。现在,假设你是一位开发工程师,你正在构建一个推荐系统。你的目标是根据用户的喜好向他们推荐电影。用户的喜好也可以用一个向量来表示,比如一个用户可能喜欢剧情和演技重于特效和音乐,他们的喜好向量可能是 [10, 5, 10, 4]。现在,如果你想找出哪部电影最符合这类用户的口味,你可以计算用户喜好向量和每部电影向量之间的相似度。在向量空间中,这通常通过计算向量之间的距离来完成,如欧氏距离或余弦相似度。距离越小或相似度越高,表示电影越符合用户的口味。

import numpy as np
# 定义计算余弦相似度的函数
def calculate_similarity(vector1, vector2):
    # 使用numpy库来计算余弦相似度
    dot_product = np.dot(vector1, vector2)
    norm_vector1 = np.linalg.norm(vector1)
    norm_vector2 = np.linalg.norm(vector2)
    similarity = dot_product / (norm_vector1 * norm_vector2)
    return similarity
# 假设我们有一个向量代表用户偏好
user_preference = np.array([10, 5, 10, 4])
# 我们有一系列电影向量
movie_vectors = np.array([
    [8, 7, 9, 6],   # 电影A
    [9, 6, 8, 7],   # 电影B
    [10, 5, 7, 8]   # 电影C
])
# 计算并打印每部电影与用户偏好之间的相似度
for i, movie_vector in enumerate(movie_vectors):
    similarity = calculate_similarity(user_preference, movie_vector)
    print(f"电影{chr(65+i)}与用户偏好的相似度为: {similarity:.2f}")

这段代码定义了一个计算余弦相似度的函数calculate_similarity,使用了NumPy库来进行向量运算。首先定义了用户偏好向量user_preference和一系列电影向量movie_vectors,然后通过循环计算并打印每部电影与用户偏好之间的相似度。余弦相似度是一种衡量两个向量方向的相似程度的指标,值在-1到1之间,值越大表示相似度越高。
在循环中,enumerate函数用于同时获取电影向量和对应的索引,然后调用calculate_similarity函数计算相似度,并打印出结果。

电影A与用户偏好的相似度为: 0.97
电影B与用户偏好的相似度为: 0.97
电影C与用户偏好的相似度为: 0.95

文本向量
在自然语言处理(NLP)中,一个词的向量值是通过在大量文本上训练得到的。一个词的向量值取决于它是如何被训练的,以及训练数据的性质。例如在不同的 Word2Vec 模型中,即使是相同的词,向量值也可能完全不同,因为它们可能基于不同的文本集或使用不同的参数训练。
常见的 Word2Vec 模型会生成几百维的向量。我们举一个例子来说明不同的词之间向量是怎么表示的,以及相似度是如何计算的。下面的例子是基于 GoogleNews-vectors-negative300.bin 模型计算的,计算男人和男孩的向量表示以及相似度。

import numpy as np
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
def cosine_similarity(vec_a, vec_b):
    # 计算两个向量的点积
    dot_product = np.dot(vec_a, vec_b)
    # 计算每个向量的欧几里得长度
    norm_a = np.linalg.norm(vec_a)
    norm_b = np.linalg.norm(vec_b)
    # 计算余弦相似度
    return dot_product / (norm_a * norm_b)
# 获取man和boy两个词的向量
man_vector = model['man']
boy_vector = model['boy']
# 打印出这两个向量的前10个元素
print(man_vector[:10])
print(boy_vector[:10])
similarity_man_boy = cosine_similarity(man_vector, boy_vector)
print(f"男人和男孩的相似度: {similarity_man_boy}")

这段代码首先导入了NumPy库和gensim中的KeyedVectors模块,然后加载了预训练的Google News词向量模型'GoogleNews-vectors-negative300.bin'。接下来定义了一个计算余弦相似度的函数cosine_similarity,该函数使用了NumPy库来进行向量运算。然后通过模型获取了"man"和"boy"两个词的词向量,并打印出它们的前10个元素。最后计算了"man"和"boy"两个词向量之间的余弦相似度,并打印出结果。这段代码的功能是使用预训练的词向量模型计算并展示了"man"和"boy"两个词的相似度。

[ 0.32617188  0.13085938  0.03466797 -0.08300781  0.08984375 -0.04125977
 -0.19824219  0.00689697  0.14355469  0.0019455 ]
[ 0.23535156  0.16503906  0.09326172 -0.12890625  0.01599121  0.03613281
 -0.11669922 -0.07324219  0.13867188  0.01153564]
男人和男孩的相似度: 0.6824870705604553

image