您是否对每天收集的信息感到不知所措?您是否经常发现自己迷失在 Markdown 文件、视频、网页和 PDF 的海洋中?如果有一种方法能够以前所未有的方式无缝地索引、搜索甚至与所有这些内容进行交互,该怎么办?欢迎来到个人知识管理的未来:第二大脑人工智能代理项目。
蒂亚戈·福尔特(Tiago Forte)关于第二大脑的开创性想法彻底改变了我们思考笔记的方式。这不仅仅是记下想法;它是关于创建一个增强学习和创造力的强大工具。点击此处了解有关蒂亚戈·福特 (Tiago Forte) 撰写的《构建第二大脑》的更多信息。
自动索引:不再需要手动对文件进行排序!自动索引 Markdown 文件的内容以及包含的链接,例如 PDF 文档、YouTube 视频和网页。
智能搜索引擎:询问有关您的内容的问题,我们的人工智能将使用强大的 OpenAI 大语言模型提供精确的答案。这就像拥有一位对您的内容了如指掌的私人助理!
轻松集成:无论您遵循第二大脑方法还是拥有自己独特的记笔记方式,我们的系统都能与您的风格无缝集成,帮助您充分利用信息的真正力量。
提高生产力:花更少的时间进行组织,花更多的时间进行创新。通过更快、更有效地访问您的信息,您可以专注于真正重要的事情。
不要让你的笔记和内容淹没你。让他们成为您在增长、创新和生产力方面的盟友。与我们一起改变您管理个人知识的方式并迈向未来。
如果您使用 Markdown 文件(如“第二大脑”方法或使用您自己的方式)做笔记,该项目会自动索引 Markdown 文件的内容和包含的链接(pdf 文档、youtube 视频、网页),并允许您提出以下问题:使用 OpenAI 大语言模型的内容。
该系统建立在 LangChain 框架和 ChromaDB 矢量存储之上。
系统将您存储 Markdown 笔记的目录作为输入。例如,我用 Obsidian 做笔记。然后系统通过以下管道自动处理这些文件中的任何更改:
图解TD
A[编辑器中的 Markdown 文件]-->B[Markdown 和指针中的文本文件]-->C[文本块]-->D[矢量数据库]-->E[第二大脑 AI 代理]
从 Markdown 文件中,transform_md.py 从 Markdown 文件中提取文本,然后从 Markdown 文件内的链接中提取 pdf、url、youtube 视频并将其转换为文本。支持从 Markdown 文件中提取历史数据:如果有## History
部分或文件名包含History
,则文件会根据<day> <month> <year>
部分拆分为多个部分,例如### 10 Sep 2023
。
从这些文本文件中,transform_txt.py 将这些文本文件分成块,创建向量嵌入,然后将这些向量嵌入存储到向量数据库中。
第二个大脑代理使用向量数据库来获取向大型语言模型询问问题的上下文。这个过程称为检索增强生成(RAG)。
实际上,该过程比标准 RAG 更复杂。它正在分析问题,然后根据意图使用不同的链:
流程图TD
A[问题] --> C[/获取意图/]
C --> E[汇总请求] --> EA[/提取所有块/] --> EB[/汇总块/]
C --> F[pdf 或 URL 查找] --> FA[/提取 URL/]
C --> D[活动报告]
C --> G[常规问题]
D --> DA[/获取周期元数据/] --> DB[/获取主题元数据/] --> DC[/提取没有时间的问题/] --> H[/从向量数据库n提取最近的文档 n通过元数据过滤/]
G --> GA[/后退问题/] --> GB[/从向量数据库n提取最近的文档/]
H --> I[/使用文档作为上下文n向法学硕士提问/]
国标 --> 我
您需要安装 Python 3 解释器、 poetry
和inotify-tools
。所有这些都已在我的笔记本电脑上的 Fedora Linux 38 和 CI 工作流程中最新的 Ubuntu 下进行了测试。让我知道它是否适用于您的系统。
获取源代码:
$ git clone https://github.com/flepied/second-brain-agent.git
复制示例 .env 文件并对其进行编辑以适合您的设置:
$ cp example.env .env
使用诗歌安装依赖项:
$ poetry install
诗歌、火炬和 pypi 之间存在错误,解决方法如下:
$ poetry run pip install torch
然后要使用创建的 virtualenv,请执行以下操作:
$ poetry shell
要安装 systemd 服务以在操作系统启动时自动管理不同的脚本,请使用以下命令(需要 sudo 访问权限):
$ ./install-systemd-services.sh
要查看 md 和 txt 服务的输出:
$ journalctl --unit=sba-md.service --user
$ journalctl --unit=sba-txt.service --user
$ ./similarity.py " What is LangChain? " type=notes
使用向量存储来查找音符之间的新联系:
$ ./smart_connections.py
启动此命令以访问 Web UI:
$ streamlit run second_brain_agent.py
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8502
Network URL: http://192.168.121.112:8502
这是一个例子:
使用诗歌安装额外的依赖项:
$ poetry install --with test
然后运行测试,如下所示:
$ poetry run pytest
在提交 PR 之前,请确保激活预提交:
poetry run pre-commit install