<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Faiss on Chang Luo</title>
		<link>https://www.luochang.ink/tags/faiss/</link>
		<description>Recent content in Faiss on Chang Luo</description>
		<generator>Hugo</generator>
		<language>zh-CN</language>
		
		
		
		
			<lastBuildDate>Sun, 29 Dec 2024 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://www.luochang.ink/tags/faiss/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>搭建一款简单的『以文搜图』应用</title>
				<link>https://www.luochang.ink/posts/clip_app/</link>
				<pubDate>Sun, 29 Dec 2024 00:00:00 +0000</pubDate>
				<guid>https://www.luochang.ink/posts/clip_app/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;在手机相册搜索框中输入“笔记本电脑”时，即使照片本身并未包含“笔记本电脑”这几个字，相关图片依然能够被精准地检索出来。这说明现代相册 APP 不仅使用图片 OCR 文本来召回搜索结果。它综合使用了多种技术，包括多模态技术。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;本文使用多模态模型 CLIP 搭建一个简单的『以文搜图』应用，实现与相册 APP 类似的搜索效果。&lt;/p&gt;&#xA;&lt;p&gt;GitHub 项目地址：&lt;a href=&#34;https://github.com/luochang212/clip-app&#34; target=&#34;_blank&#34;&gt;clip-app&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;本文涉及的内容包括：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;用 FastAPI 搭建图文向量生成服务&lt;/li&gt;&#xA;&lt;li&gt;用 FastAPI 搭建 Faiss 向量搜索服务&lt;/li&gt;&#xA;&lt;li&gt;集成以上两个服务，实现『以文搜图』应用&lt;/li&gt;&#xA;&lt;li&gt;使用 &lt;code&gt;@torch.inference_mode()&lt;/code&gt; 装饰器，优化推理性能&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;✨ 如果你对多模态模型的效果有更高的要求，可以尝试 &lt;a href=&#34;https://huggingface.co/docs/transformers/en/model_doc/blip-2&#34; target=&#34;_blank&#34;&gt;BLIP-2&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一加载-clip-模型&#34;&gt;一、加载 CLIP 模型&lt;/h2&gt;&#xA;&lt;p&gt;加载 CLIP 模型，生成图文 Embedding。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;获取文本 Embedding&lt;/li&gt;&#xA;&lt;li&gt;获取图像 Embedding&lt;/li&gt;&#xA;&lt;li&gt;多条文本对一张图片&lt;/li&gt;&#xA;&lt;li&gt;一条文本对多张图片&lt;/li&gt;&#xA;&lt;li&gt;多条文本对多张图片&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;br&gt;&#xA;&lt;center&gt;&#xA;&lt;button class=&#34;demo-btn&#34; onclick=&#34;window_on(&#39;https://nbviewer.org/github/luochang212/clip-app/blob/main/1.clip_model.ipynb&#39;)&#34;&gt;查看笔记&lt;/button&gt;&#xA;&lt;/center&gt;&#xA;&lt;br&gt;&#xA;&lt;h2 id=&#34;二faiss-向量搜索&#34;&gt;二、Faiss 向量搜索&lt;/h2&gt;&#xA;&lt;p&gt;用 FastAPI + Faiss 写一个向量检索服务 &lt;a href=&#34;https://github.com/luochang212/clip-app/blob/main/faiss/server.py&#34; target=&#34;_blank&#34;&gt;faiss/server.py&lt;/a&gt;，该服务提供两个接口：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;路由名&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;描述&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;add&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;用于向索引中添加新的 Embedding&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;search&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;用于从索引中取回给定 Embedding 的最近邻 Embedding&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;br&gt;&#xA;&lt;center&gt;&#xA;&lt;button class=&#34;demo-btn&#34; onclick=&#34;window_on(&#39;https://nbviewer.org/github/luochang212/clip-app/blob/main/2.faiss_client.ipynb&#39;)&#34;&gt;查看笔记&lt;/button&gt;&#xA;&lt;/center&gt;&#xA;&lt;br&gt;&#xA;&lt;h2 id=&#34;三clip-向量生成&#34;&gt;三、CLIP 向量生成&lt;/h2&gt;&#xA;&lt;p&gt;用 FastAPI 写一个简单的 CLIP Embedding 生成服务 &lt;a href=&#34;https://github.com/luochang212/clip-app/blob/main/embedding/server.py&#34; target=&#34;_blank&#34;&gt;embedding/server.py&lt;/a&gt;。接口输入是图片、文本，输出是图文 Embedding。该服务提供 3 个 API 接口：&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
