Memvid是一个基于视频的人工智能记忆解决方案,将文本数据编码成视频,在数百万文本块中搜索,检索时间在亚秒级。
Memvid将文本数据编码到视频中,实现AI记忆管理,用视频文件存储海量的文本块,支持数百万文本块在单个MP4文件中存储,语义搜索达到亚秒级。相比传统向量数据库消耗大量内存和存储的问题,Memvid将知识库压缩为紧凑的视频文件,存储效率提升了10倍,不需要数据库服务器,生成视频后可以离线使用。
视频即数据库:单个MP4文件存储数百万文本块 语义搜索:自然语言查询,能快速定位相关内容 内置聊天功能:支持上下文感知的对话 PDF导入:可直接索引PDF文档的内容 检索功能:搜索海量数据集达到亚秒级 轻量级架构:核心功能仅约1000行Python代码,CPU环境就可以正常运行 AI模型扩展:支持OpenAI、Anthropic等模型,提供API接口
数字图书馆:将数千本书籍索引到单个视频文件 教育内容:创建支持搜索的课程资料视频记忆 新闻档案:将多年文章压缩为方便管理的视频数据库 企业知识库:构建全公司可以搜索的知识体系 科研文献:快速语义搜索科学文献 个人笔记:将笔记转化为可搜索的AI助手
# 基础安装
pip install memvid
# 支持PDF需额外安装
pip install memvid PyPDF2
# 推荐使用虚拟环境
mkdir my-memvid-project && cd $_
python -m venv venv
# macOS/Linux系统激活命令
source venv/bin/activate
# Windows系统激活命令
venv\Scripts\activate
pip install memvid PyPDF2
# 从文本块创建视频记忆
from memvid import MemvidEncoder, MemvidChat
chunks = ["重要事实1", "重要事实2", "历史事件详情", ...]
encoder = MemvidEncoder()
encoder.add_chunks(chunks)
encoder.build_video("memory.mp4", "memory_index.json")
# 与记忆进行对话
chat = MemvidChat("memory.mp4", "memory_index.json")
chat.start_session()
response = chat.chat("你对历史事件了解什么?")
print(response)
from memvid import MemvidEncoder
import os
encoder = MemvidEncoder(chunk_size=512, overlap=50)
# 批量添加文本文件
for file in os.listdir("documents"):
with open(f"documents/{file}", "r") as f:
encoder.add_text(f.read(), metadata={"source": file})
# 生成优化视频
encoder.build_video(
"knowledge_base.mp4",
"knowledge_index.json",
fps=30, # 帧率越高每秒存储块数越多
frame_size=512 # 帧尺寸越大单帧数据量越大
)
from memvid import MemvidRetriever
retriever = MemvidRetriever("knowledge_base.mp4", "knowledge_index.json")
# 执行语义搜索
results = retriever.search("机器学习算法", top_k=5)
for chunk, score in results:
print(f"得分:{score:.3f} | 内容:{chunk[:100]}...")
# 获取上下文窗口
context = retriever.get_context("解释神经网络", max_tokens=2000)
print(context)
from memvid import MemvidInteractive
interactive = MemvidInteractive("knowledge_base.mp4", "knowledge_index.json")
interactive.run() # 启动本地网页界面:http://localhost:7860
from sentence_transformers import SentenceTransformer
# 使用自定义嵌入模型
custom_model = SentenceTransformer('sentence-transformers/all-mpnet-base-v2')
encoder = MemvidEncoder(embedding_model=custom_model)
# 最大化压缩配置
encoder.build_video(
"compressed.mp4",
"index.json",
fps=60, # 提高帧率
frame_size=256, # 缩小帧尺寸
video_codec='h265', # 使用高效编码
crf=28 # 压缩质量(数值越低质量越高)
)
模块未找到错误:确认使用正确的Python环境,激活虚拟环境
PDF支持缺失:安装PyPDF2库 pip install PyPDF2
OpenAI API密钥问题:设置环境变量 export OPENAI_API_KEY="你的密钥"
(macOS/Linux)或 set OPENAI_API_KEY=你的密钥
(Windows)
大文件处理:处理大PDF时可减小分块大小 encoder = MemvidEncoder(chunk_size=400)
功能特性 | Memvid | 向量数据库 | 传统数据库 |
---|---|---|---|
存储效率 | ★★★★★ | ★★ | ★★★ |
部署复杂度 | 简单 | 复杂 | 复杂 |
语义搜索 | 支持 | 支持 | 不支持 |
离线使用 | 支持 | 不支持 | 支持 |
便携性 | 基于文件 | 基于服务器 | 基于服务器 |
可扩展性 | 数百万级 | 数百万级 | 数十亿级 |
成本 | 免费 | 高昂 | 较高 |