aardio 文档
aardio 范例: 嵌入模型/文本向量化
//嵌入模型/文本向量化
import console;
console.showLoading("正在创建向量...");
// 1. 创建客户端
import web.rest.embeddings;
var embeddings = web.rest.embeddings(
key = "密钥";
url = "https://api.siliconflow.cn/v1/",//接口地址, "/v1" 后缀不能省略
model = "BAAI/bge-large-zh-v1.5" //嵌入模型 ID,llama.cpp 运行的模型不用指定这个参数
//dimensions = 1024;
//format = "float"
);
// 2. 为第一段文本创建向量
var data, err = embeddings.create("今天天气真不错");
if(!#data) { //null 或空数组都会返回 0
return console.errorPause(err||data);
}
var vector1 = data[1].embedding;// 提取向量
// 3. 为第二段文本创建向量(用于比较)
var data2, err = embeddings.create("今天天气真不好");
if(!#data2) {
return console.errorPause(err||data2);
}
var vector2 = data2[1].embedding;// 提取向量
// 4. 计算余弦相似度
var cos = function(vecA, vecB) {
if ((#vecA != #vecB) || (#vecA == 0)) {
return 0; // 维度不同或为空则无法比较
}
var dotProduct = 0;
var normA = 0;
var normB = 0;
for (i = 1; #vecA) {
var valA = vecA[i];
var valB = vecB[i];
dotProduct = dotProduct + (valA * valB);
normA = normA + (valA * valA);
normB = normB + (valB * valB);
}
if (normA == 0 || normB == 0) {
return 0; // 避免除以零
}
return dotProduct / (math.sqrt(normA) * math.sqrt(normB));
}
// 5. 比较相似度
var similarity = cos(vector1, vector2);
if (similarity > 0.8) {
console.log("结论: 两段文本语义非常相近。", similarity);
} else {
console.log("结论: 两段文本语义不相近。", similarity);
}
console.pause();
Markdown 格式