AI大模型 向量Embeddings+向量数据库实现文搜文、图搜图

文搜文、图搜图介绍:
IT营大地老师主讲AI大模型 向量Embeddings+向量数据库实现文搜文、图搜图学习:

AI教程

文搜文 :即文本搜索文本,是指通过输入关键词或短语,在大量文本数据中检索出与之相关的内容 。 索引擎(百度、谷歌、 360 文档管理系统 电商搜索

图搜图 :即图像搜索图像,是一种基于图像内容的搜索技术 。 电商平台 版权保护 设计行业 慧医疗 ( 医生可以通过图搜图技术检索医学影像库中的相似病例,辅助病情诊断和治疗方案的制定 )、 旅游出行

传统的 Elasticsearch 全文搜索引擎可以通过分词实现搜索功能,但是要实现图搜图就无从下手了。

向量 Embeddings 结合向量数据库不仅可以实现文搜文,还实现图搜图。

向量 Embeddings 结合向量数据库在向量搜索领域相比 Elasticsearch 具有更高的性能(比如相似度)、更强的灵活性和可扩展性、更低的开发门槛和成本效益,以及更广泛的应用场景。

比如 Milvus 向量数据库,在 万亿条 向量数据中检索数据可以实现毫秒级别的速度。

向量 Embeddings 介绍:

向量 Embeddings 也叫向量嵌入( Vector Embeddings ),是自然语言处理( NLP )和机器学习领域中一个非常重要的概念,它是一种将高维数据(如文本、图像、音频或视频等)映射到低维空间(向量)的技术。这种转换使得这些数据(如文本、图像、音频或视频等)能够在数学上被处理,从而能够进行自然语言搜索、分类、计算等操作。

非结构化数据 ( WORD PDF TXT ) ,通过 深度学习模型 ( 神经网络 ) ,把 自然语言 转换成 向量 ,这样就可以实现自然语言搜索、分类、计算等操作。

深度学习向量模型 (神经网络)目前已经非常成熟,如何借助深度学习模型把 非结构化数据转换成向 并对向量进行处理 是目前开发 AI 大模型应用开发比较关注的问题。

向量 Embeddings 在多个领域都有广泛的应用,包括但不限于:

1、自然语言处理( NLP :在 NLP 中,单词 Embedding (词嵌入)是一种常见的技术,用于将单词转换为连续向量表示。这种表示方法有助于捕捉单词之间的语义关系,从而提高NLP 任务的性能, 如文本分类、情感分析、机器翻译等。

2、图像处理 :在图像处理领域,图像 Embedding 技术可以将图像转换为向量表示,从而便于进行图像分类、识别、检索等任务。

3、推荐系统 :推荐系统可以利用用户行为数据(如点击、购买、评分等)和物品属性数据(如标题、描述、图片等)生成向量表示,进而计算用户与物品之间的相似度,从而为用户推荐可能感兴趣的物品。

这张图片通过坐标系和向量化表示的方法,展示了四种动物(猫、狗、牛、羊)在某种 抽象空间 中的位置关系 。

通过把自燃语言向量转化为向量,可以让我们在向量空间中进行语义搜索、分类、计算等操作。

比如我们把 宠物 向量化,然后用对应的向量进行搜索,就可以获取猫和狗的向量数据。比如我们把 家畜“ 向量化,然后用应的向量进行搜索就可以搜索到牛和羊对应的向量,从而实现语言搜索。

Embeddings 大模型 : BERT ( Google 开发 ) GPT 系列 Word2Vec 百度文心大模型 bge-large- zh 智谱 讯飞新火 等。

### 使用YOLOv8实现图搜图功能 为了利用YOLOv8进行像检索或相似索,可以借鉴YOLOv5与CLIP相结合的方式。通过引入CLIP模型来增强YOLOv8的功能,不仅能够识别像中的对象位置,还能理解像的内容并执行语义级别的匹配[^1]。 具体来说,可以通过以下方式集成YOLOv8和CLIP: - **预处理阶段**:输入待查询的像至YOLOv8中获取感兴趣区域(ROI),这些区域代表可能的目标物体。 - **特征提取**:对于每一个由YOLOv8定位出来的ROI,应用CLIP模型抽取其视觉特征向量;同时对数据库内的每一张候选片也做同样的操作得到对应的特征表示。 - **相似度计算**:采用余弦距离或其他合适的度量方法比较新上传片各部分同已有库内条目之间的相似程度,从而找出最接近的结果集合。 此外,在构建用于训练的数据集方面,可以从网络上抓取大量样本素材作为基础资源。例如,借助百度识工具自动化收集关联影像资料,并将其链接传递给专门负责查找近似项的服务端程序完成批量下载工作。在此过程中还可以设定循环终止准则确保过程可控有效[^2]。 ```python import torch from PIL import Image from yolov8 import YOLOv8 from clip import CLIPModel, preprocess as clip_preprocess def load_model(): yolo = YOLOv8() clip = CLIPModel.from_pretrained('openai/clip-vit-base-patch32') return yolo, clip yolo, clip = load_model() image_path = 'path_to_query_image.jpg' input_image = Image.open(image_path) # Detect objects using YOLOv8 and crop regions of interest (ROIs) detections = yolo.detect(input_image) rois = [input_image.crop((bbox['left'], bbox['top'], bbox['right'], bbox['bottom'])) for bbox in detections] # Preprocess ROIs and get embeddings with CLIP preprocessed_rois = [clip_preprocess(img).unsqueeze(0) for img in rois] embeddings = torch.cat([clip.encode_image(preproc_roi.to('cuda')) for preproc_roi in preprocessed_rois], dim=0) print(f'Embedding shape: {embeddings.shape}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值