04-基于Embedding的相似搜索
本文介绍了使用智谱AI的Embedding技术进行文本相似搜索的实现方法。通过读取存储文本向量的CSV文件,将字符串格式的向量转换为可计算的Python列表。文章详细说明了调用智谱AI的embedding接口将文本转换为高维向量,以及计算余弦相似度的函数实现。最后演示了如何根据关键词在向量空间中进行相似搜索,并返回相似度最高的结果。该方法可应用于文本检索、推荐系统等场景,通过向量相似度快速找到相关
·
本文介绍了使用智谱AI的Embedding技术进行文本相似搜索的实现方法。通过读取存储文本向量的CSV文件,将字符串格式的向量转换为可计算的Python列表。文章详细说明了调用智谱AI的embedding接口将文本转换为高维向量,以及计算余弦相似度的函数实现。最后演示了如何根据关键词在向量空间中进行相似搜索,并返回相似度最高的结果。该方法可应用于文本检索、推荐系统等场景,通过向量相似度快速找到相关内容。
ps:数据在我的资源专栏里面
#基于Embedding的相似搜索
import pandas as pd
import numpy as np
import ast
from zhipuai import ZhipuAI
df=pd.read_csv('datas/embedding_output_1k_zhipu.csv')
# ====== 使用 智谱 AI Embedding ======
ZHIPU_API_KEY = "XXXX" # 🔑 替换为你自己的 API Key
client = ZhipuAI(api_key=ZHIPU_API_KEY)
##把 CSV 中存储为「字符串格式」的 Embedding 向量,转换成可计算的 Python 列表
df['embedding_vec'] = df['embedding'].apply(ast.literal_eval)
#调用智谱 AI 的 /embeddings 接口,将输入文本 text 转换为高维向量
def embedding_text(text, model="embedding-3"):
"""
使用智谱 AI 的 embedding 模型
支持模型: embedding-2, embedding-3
"""
response = client.embeddings.create(
model=model,
input=text) # 智谱支持字符串或列表
return response.data[0].embedding
#计算两个向量的余弦距离,值越大越相似,范围 [-1, 1]
def cosine_distance(a,b):
return np.dot(a,b)/((np.linalg.norm(a))*(np.linalg.norm(b)))
#根据指定的关键词(句子)去向量空间中进行相似搜索
def search_by_word(df,word_key,n_result=3,print_flag=True):
#把关键词向量化
word_embedding=embedding_text(word_key)
#对每条记录计算与关键词的相似度
df['similarity']=df.embedding_vec.apply(lambda x:cosine_distance(x,word_embedding))
#按相似度降序排序,取前 n_result 条
res=(
df.sort_values('similarity',ascending=False)
.head(n_result)
.combined.str.replace('Titile:',"")
.str.replace(';Content',';')
)
if print_flag:
for r in res:
print(r)
print()
return res
if __name__ == '__main__':
search_by_word(df,'delicious beans',3)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)