安爸-超级家庭

颠覆传统向量数据库,直接将文本数据编码成视频文件,轻量级革命性的大规模AI记忆解决方案Memvid

安爸 发布于

项目简介

Memvid通过将文本数据编码为视频,彻底改变了AI记忆管理,实现了百万级文本块的闪电般语义搜索亚秒级检索速度。与传统向量数据库消耗大量内存和存储不同,Memvid将知识库压缩为紧凑的视频文件,同时保持对任何信息的即时访问。

🎥 演示

https://github.com/user-attachments/assets/ec550e93-e9c4-459f-a8a1-46e122b5851e

✨ 核心特性

  • 🎥 视频即数据库:将数百万文本块存储在单个MP4文件中
  • 🔍 语义搜索:使用自然语言查询查找相关内容
  • 💬 内置聊天:支持上下文感知的对话式交互
  • 📚 PDF支持:直接导入和索引PDF文档
  • 🚀 快速检索:海量数据亚秒级搜索
  • 💾 高效存储:相比传统数据库压缩10倍
  • 🔌 可插拔LLM:支持OpenAI、Anthropic或本地模型
  • 🌐 离线优先:视频生成后无需联网
  • 🔧 简单API:仅需3行代码即可开始使用

🎯 应用场景

  • 📖 数字图书馆:将数千本书索引到单个视频文件中
  • 🎓 教育内容:创建课程材料的可搜索视频记忆
  • 📰 新闻存档:将多年文章压缩为可管理的视频数据库
  • 💼 企业知识:构建公司级可搜索知识库
  • 🔬 研究论文:快速语义搜索科学文献
  • 📝 个人笔记:将笔记转化为可搜索的AI助手

🚀 为什么选择Memvid?

突破性创新

  • 视频即数据库:将数百万文本块存储在单个MP4文件中
  • 即时检索:海量数据亚秒级语义搜索
  • 10倍存储效率:视频压缩显著减少内存占用
  • 零基础设施:无需数据库服务器,仅需可随处复制的文件
  • 离线优先:视频生成后完全离线工作

轻量级架构

  • 最小依赖:核心功能仅约1000行Python代码
  • CPU友好:无需GPU即可高效运行
  • 便携:单个视频文件包含整个知识库
  • 可流式传输:视频可从云存储流式传输

📦 安装

快速安装

ounter(line pip install memvid

支持PDF

ounter(line pip install memvid PyPDF2

推荐设置(虚拟环境)

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line # 创建新项目目录 mkdir my-memvid-project cd my-memvid-project # 创建虚拟环境 python -m venv venv # 激活环境 # macOS/Linux: source venv/bin/activate # Windows: venv\Scripts\activate # 安装memvid pip install memvid # 支持PDF: pip install PyPDF2

🎯 快速开始

基础用法

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line 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)

从文档构建记忆

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line 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,  # 更高FPS = 每秒更多文本块     frame_size=512  # 更大帧 = 每帧更多数据 )

高级搜索与检索

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line 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)

交互式聊天界面

ounter(lineounter(lineounter(lineounter(lineounter(line from memvid import MemvidInteractive # 启动交互式聊天UI interactive = MemvidInteractive("knowledge_base.mp4", "knowledge_index.json") interactive.run()  # 在http://localhost:7860打开网页界面

完整示例:与PDF书籍对话

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line # 1. 创建新目录并设置环境 mkdir book-chat-demo cd book-chat-demo python -m venv venv source venv/bin/activate  # Windows: venv\Scripts\activate # 2. 安装依赖 pip install memvid PyPDF2 # 3. 创建book_chat.py cat > book_chat.py << 'EOF' from memvid import MemvidEncoder, chat_with_memory import os # 您的PDF文件 book_pdf = "book.pdf"  # 替换为您的PDF路径 # 构建视频记忆 encoder = MemvidEncoder() encoder.add_pdf(book_pdf) encoder.build_video("book_memory.mp4", "book_index.json") # 与书籍对话 api_key = os.getenv("OPENAI_API_KEY")  # 可选:用于AI响应 chat_with_memory("book_memory.mp4", "book_index.json", api_key=api_key) EOF # 4. 运行 export OPENAI_API_KEY="您的API密钥"  # 可选 python book_chat.py

🔧 API参考

MemvidEncoder

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line encoder = MemvidEncoder(     chunk_size=512,      # 每块字符数     overlap=50,          # 块间重叠字符数     model_name='all-MiniLM-L6-v2'  # 句子转换模型 ) # 方法 encoder.add_chunks(chunks: List[str], metadata: List[dict] = None) encoder.add_text(text: str, metadata: dict = None) encoder.build_video(video_path: str, index_path: str, fps: int = 30, qr_size: int = 512)

MemvidRetriever

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line retriever = MemvidRetriever(     video_path: str,     index_path: str,     cache_size: int = 100  # 缓存帧数 ) # 方法 results = retriever.search(query: str, top_k: int = 5) context = retriever.get_context(query: str, max_tokens: int = 2000) chunks = retriever.get_chunks_by_ids(chunk_ids: List[int])

MemvidChat

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line chat = MemvidChat(     video_path: str,     index_path: str,     llm_backend: str = 'openai',  # 'openai', 'anthropic', 'local'     model: str = 'gpt-4' ) # 方法 chat.start_session(system_prompt: str = None) response = chat.chat(message: str, stream: bool = False) chat.clear_history() chat.export_conversation(path: str)

🛠️ 高级配置

自定义嵌入

ounter(lineounter(lineounter(lineounter(lineounter(line from sentence_transformers import SentenceTransformer # 使用自定义嵌入模型 custom_model = SentenceTransformer('sentence-transformers/all-mpnet-base-v2') encoder = MemvidEncoder(embedding_model=custom_model)

视频优化

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line # 最大压缩 encoder.build_video(     "compressed.mp4",     "index.json",     fps=60,  # 更高帧率     frame_size=256,  # 更小帧     video_codec='h265',  # 更好压缩     crf=28  # 压缩质量(更低=更好质量) )

分布式处理

ounter(lineounter(lineounter(line # 并行处理大数据集 encoder = MemvidEncoder(n_workers=8) encoder.add_chunks_parallel(massive_chunk_list)

🐛 故障排除

常见问题

ModuleNotFoundError: No module named ‘memvid’

ounter(lineounter(lineounter(lineounter(line # 确保使用正确的Python which python  # 应显示虚拟环境路径 # 如未激活虚拟环境: source venv/bin/activate  # Windows: venv\Scripts\activate

ImportError: PyPDF2 is required for PDF support

ounter(line pip install PyPDF2

OpenAI API密钥问题

ounter(lineounter(lineounter(lineounter(line # 设置API密钥(获取地址https://platform.openai.com) export OPENAI_API_KEY="sk-..."  # macOS/Linux # Windows: set OPENAI_API_KEY=sk-...

处理大型PDF

ounter(lineounter(lineounter(line # 对于超大PDF,使用更小块大小 encoder = MemvidEncoder() encoder.add_pdf("large_book.pdf", chunk_size=400, overlap=50)

🆚 与传统解决方案对比

特性

Memvid

向量数据库

传统数据库

存储效率

⭐⭐⭐⭐⭐

⭐⭐

⭐⭐⭐

设置复杂度

简单

复杂

复杂

语义搜索

离线使用

便携性

基于文件

基于服务器

基于服务器

可扩展性

百万级

百万级

十亿级

成本

免费

$$$

📚 示例

查看examples/目录:

  • 从维基百科转储构建记忆
  • 创建个人知识库
  • 多语言支持
  • 实时记忆更新
  • 与流行LLM集成

🔗 项目地址

🙏 致谢

由Olow304和Memvid社区创建。

使用以下工具构建:

  • sentence-transformers – 语义搜索的最先进嵌入
  • OpenCV – 计算机视觉和视频处理
  • qrcode – QR码生成
  • FAISS – 高效相似性搜索
  • PyPDF2 – PDF文本提取

特别感谢所有帮助改进Memvid的贡献者!

扫码加入技术交流群,备注「开发语言-城市-昵称

(文:GitHubStore)

颠覆传统向量数据库,直接将文本数据编码成视频文件,轻量级革命性的大规模AI记忆解决方案Memvid最先出现在每时AI


扫描二维码,在手机上阅读