大量重复 短视频、音频、图片、文章 怎么去重?
短视频、音频、图片、文章 怎么去重?
如何对视频、音频、图片、文章 去重?
非结构化数据在数据库中要以向量表示,才能与大模型应用结合。
1、使用embedding模型, 将内容转换为向量.
例如使用bailian的多模态模型: multimodal-embedding-v1
https://help.aliyun.com/zh/model-studio/model-user-guide
示例代码
import dashscope
import json
from http import HTTPStatus
# 实际使用中请将url地址替换为您的视频url地址
video = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250107/lbcemt/new+video.mp4"
input = [{'video': video}]
# 调用模型接口
resp = dashscope.MultiModalEmbedding.call(
model="multimodal-embedding-v1",
input=input
)
if resp.status_code == HTTPStatus.OK:
print(json.dumps(resp.output, ensure_ascii=False, indent=4))
输出示例
{
"status_code": 200,
"request_id": "23478d14-55c6-98cc-9706-29d23de742fb",
"code": "",
"message": "",
"output": {
"embeddings": [
{
"index": 0,
"embedding": [
-0.0396728515625,
0.00650787353515625,
-0.0223388671875,
...
],
"type": "image"
}
]
},
"usage": {
"input_tokens": 0,
"image_count": 1,
"duration": 0
}
}
2、将embeddings值写入向量数据库, 例如pgvector, tbl表.
3、创建向量索引
去重方法
1、输入一个视频, 判断这个视频是否在已有视频中存在.
先用前面的方法得到输入视频的embedding值v1, 示例SQL:
-- 不同的距离算法使用不同的ops, 详见: https://github.com/pgvector/pgvector
-- 以下伪代码
select 1 from tbl where vec <-> v1 < 相似度阈值 limit 1; -- 有返回表示有重复
select vec <-> v1 < 相似度阈值 from tbl order by vec <-> v1 limit 1; -- true 表示有重复
2、如果要对已有视频进去全面去重复, 需要做笛卡尔乘积运算。可以开启并行计算加速处理。
向量优化方法参考
以下参考文章来自: https://github.com/digoal/blog
《向量搜索优化3板斧: 空间、性能、召回(recall)》
《头大! 索引扫描和全表扫描结果不一样, 这向量数据库还能用? 教你一招大幅提升召回率(recall)》
《如何去除向量数据库的重复相似内容》