🧠 Motorhead (已废弃)
该项目不再提供支持。
Motorhead 是一个面向大型语言模型(LLMs)的记忆和信息检索服务器。
为什么使用 Motorhead?
在使用大型语言模型构建聊天应用时,每次都需要处理记忆问题。Motorhead 是一个辅助这一过程的服务器。它提供了3个简单的API:
- GET
/sessions/:id/memory
返回最多MAX_WINDOW_SIZE
条消息。
{
"messages": [
{
"role": "AI",
"content": "电子音乐和萨尔萨是两种非常不同的音乐流派,人们跳舞的方式也很不一样。"
},
{
"role": "Human",
"content": "它与萨尔萨相比如何?"
},
{
"role": "AI",
"content": "电子音乐是一个广泛的流派,包含许多不同的风格,所以没有一种"正确"的跳舞方式。"
},
{
"role": "Human",
"content": "如何跳电子音乐?"
},
{
"role": "AI",
"content": "哥伦比亚有一个充满活力的电子音乐场景,有许多才华横溢的DJ和制作人获得了国际认可。"
},
{
"role": "Human",
"content": "哥伦比亚有哪些著名的DJ?"
},
{
"role": "AI",
"content": "Baum于2014年开业,迅速成为波哥大最受欢迎的电子音乐俱乐部之一。"
}
],
"context": "对话涵盖了波哥大的电子音乐俱乐部、城市热门旅游景点以及关于哥伦比亚的一般信息等话题。AI提供了有关受欢迎的电子音乐俱乐部(如Baum和Video Club)的信息,以及在波哥大举行的电子音乐节。AI还推荐了旅游景点,如La Candelaria、蒙塞拉特和西帕基拉盐教堂,并提供了关于哥伦比亚多样化文化、景观和野生动物的一般信息。",
"tokens": 744 // 用于渐进式摘要的令牌数
}
- POST
/sessions/:id/memory
- 向 Motorhead 发送一组消息以进行存储。
curl --location 'localhost:8080/sessions/${SESSION_ID}/memory' \
--header 'Content-Type: application/json' \
--data '{
"messages": [{ "role": "Human", "content": "ping" }, { "role": "AI", "content": "pong" }]
}'
存储消息时可以使用现有或新的 SESSION_ID
,如果之前不存在,会自动创建会话。
如果需要从其他数据存储加载,可以选择性地发送 context
。
- DELETE
/sessions/:id/memory
- 删除会话的消息列表。
为LLM设置了最大 window_size
以跟踪对话。一旦达到最大值,Motorhead 将处理(window_size / 2
条消息)并对其进行摘要。随着消息增长,后续的摘要是增量式的。
- POST
/sessions/:id/retrieval
- 使用VSS按文本查询搜索。
curl --location 'localhost:8080/sessions/${SESSION_ID}/retrieval' \
--header 'Content-Type: application/json' \
--data '{
"text": "Generals gathered in their masses, just like witches in black masses"
}'
搜索会自动按提供的会话ID进行分段(过滤)。
配置
MOTORHEAD_MAX_WINDOW_SIZE
(默认值:12)- 服务器返回的最大消息数。达到这个数量时,会触发一个任务将其减半。MOTORHEAD_LONG_TERM_MEMORY
(默认值:false)- 使用Redisearch VSS启用长期记忆。MOTORHEAD_MODEL
(默认值:gpt-3.5-turbo)- 用于运行增量摘要的模型。使用gpt-3.5-turbo
或gpt-4
- 否则可能会发生一些奇怪的事情。PORT
(默认值:8000)- Motorhead 服务器端口OPENAI_API_KEY
- 您的API密钥,用于连接OpenAI。REDIS_URL
(必填)- 用于连接redis
的URL。OPENAI_API_BASE
(默认值:https://api.openai.com/v1)- OpenAI API 基础URL
Azure 部署
Azure部署需要额外的环境变量:
AZURE_DEPLOYMENT_ID
AZURE_DEPLOYMENT_ID_ADA
AZURE_API_BASE
AZURE_API_KEY
如何运行
使用docker-compose:
docker-compose build && docker-compose up
或者您可以直接使用镜像 docker pull ghcr.io/getmetal/motorhead:latest
:
docker run --name motorhead -p 8080:8080 -e PORT=8080 -e REDIS_URL='redis://redis:6379' -d ghcr.io/getmetal/motorhead:latest