知识库
Key Takeaway
- 传统RAG在处理复杂查询时存在局限性,无法有效捕捉实体关系和层次结构。
- Second Me项目通过混合记忆架构(结合RAG、GraphRAG和本地模型微调)来解决传统知识库的局限,旨在打造一个能模仿用户风格、语气和关注议题的“第二个我”。
- 混合记忆架构包含三个层级:L0(快速检索层,RAG)、L1(记忆深度处理与结构化层,GraphRAG)和L2(模型个性化微调层)。
- Second Me的部署和训练过程包括自我介绍、上传资料、输入API Key和选择Base Model,核心在于五个步骤的训练。
- 该项目能够实现个人知识库与大语言模型能力的结合,提供更先进的AI交互体验,并具有将个人分身发布到网络供他人调用的想象空间。
Full Content
每一个搭建AI知识库的人,都有一个终极梦想:
把自己手头的所有资料,甚至毕生所学,全都教给AI。这样一来,我们知道的,它都知道。而且,它还有我们不具备的超强计算能力。
简单来说就是:第二个我。
用RAG做不到这一点。过去一年,我出过好多期关于RAG的视频。但是,当我了解得越深、用得越多之后,我越来越明白RAG在技术上的局限性。
你想嘛,无论你用什么样的策略,最终召回的还是那些被切碎的、独立的文本块,这一点不会改变。
要实现刚才说的“第二个我”的终极目标,今天的RAG还太初级。但是我知道,肯定有人在研究、在开发。
Second Me就是截至目前最让我欣喜、最让我看到希望的项目。
它采用混合记忆架构,有点类似于咱们人类大脑的短期记忆和长期记忆。
为了实现这个架构,Second Me把RAG、GraphRAG都用上了,去深度处理用户提供的文档。最后,基于这些处理过的数据,它还在本地微调一个模型。
也就是说,这个项目其实已经脱离了知识库的范畴。因为最后我们进行交互的,是一个完全根据你的风格、语气、表达方式,以及最关心的议题所定制出来的模型,再搭配上结构化处理的知识库。
这样一套解决方案,比我们现在在用的AI知识库,显然先进得多。
哈喽大家好,欢迎来到我的频道。谦虚地说啊,我是国内少数几个能把关于AI的Why和How讲明白的博主。我提供的东西比教程更值钱。记得点一波关注。如果想链接我,就来newtype社群。已经有超过1000位小伙伴付费加入啦!
回到今天的主题:Second Me。
这个项目其实是社群里的小伙伴发现的。当时他在星球问我,怎么本地部署。我试了一下,完全没问题啊,一路上没遇到任何报错。
就像GitHub上说的那样,你先把Python和Xcode命令行工具安装好,这是必须的。
然后把整个仓库下载下来。我当时没用这行命令,而是直接下载压缩包。
再然后,用cd命令进入项目文件夹,运行make setup。它会自动安装需要的一切。你就啥也别管,等着好了。
等全部安装完成,用make start命令启动项目,然后打开一个本地链接,就可以开始训练了。这个环节也很简单,就做三件事:
第一,做个自我介绍。因为,你给的资料,最终一定要跟你的身份属性相结合,才能描绘出一个生动的你。不然就只是一堆“死”的数据。
第二,上传资料。你可以直接贴文字进去,也可以上传文档。我是直接把我视频脚本的文件夹拖进去了。
第三,输入OpenAI的API Key,以及根据你机子的性能,选择一个Base Model。
这边我需要说一下。我的机子是M4 Pro芯片,48G统一内存。平时跑7B的模型完全没压力,所以就选了7B。结果到最后的微调环节,内存压力还是有点大的。我不得不把处理项目以外的软件全都关了,才顺利完成。至于OpenAI的API,花不了多少钱。你看,我这边快100个文档,花了3美金。因为它用的是GPT-4o mini,白菜价。
当你把这三步都设置完毕,就可以正式开始训练了。Second Me的核心,就在这五个步骤的训练中。
第一步,它需要下载Base Model,用的是Qwen2.5。最后的微调就是基于这个模型进行的。
第二步,处理用户上传的资料。这边用到了RAG技术,也就是把所有文档切成更小的文本块,然后把文本块转换成向量表示,最终完成基础数据的准备、索引的创建。
第三步,提取更深层次的结构化信息。这应该就是GraphRAG技术。因为通过第二步的处理,我们得到了一大堆文本块,它们都是独立存在的,是散的。但是,如果你站在整篇文章的角度来看,文本块之间,或者说上下文之间,应该是有逻辑关系的。由于RAG技术的局限性,这种逻辑关系丢失了。
所以需要GraphRAG,把人名、地名、概念等等实体,以及实体之间的关系,全部识别、提取出来,形成一个关于你这个人、关于你的知识体系的图谱。
第四步,准备用于微调的数据集。光有用户上传的资料还不足以进行微调。因为这些资料当中,哪些数据需要增强,还得依靠前两步的处理才能知道。比如,跟用户身份特征有关的数据显然需要强化。
第五步,正式开始微调。这一步最吃性能,也最花时间。我从下午等到晚上才搞定。
这五个步骤,其实就是在实现所谓的“混合记忆”架构。这个架构包含L0、L1和L2三个层级。
第二步的RAG,对应的是L0,也就是“快速检索层”。它是一种简单、快速的记忆检索机制。你可以把它看成是人类大脑的短期记忆。
第三步的GraphRAG,对应的是L1,也就是“记忆深度处理与结构化层”。它的目标是深入理解记忆内容,提取结构化信息。你可以把它看成是人类大脑的长期记忆。
第一步、第四步和第五步,对应的是L2,也就是“模型个性化微调层”。它的产物,就是那个经过个性化训练、能够模仿用户,并且利用知识库的Second Me模型。
这一大套的东西,都是为了让三个层级共同协作,实现了一个把用户个人记忆,或者说个人知识库,与大语言模型能力相结合的“混合记忆”系统。
至于怎么使用,很简单:点击“Start Device”,这个项目会通过llama.cpp加载训练好的模型,然后咱们正常对话就好。
因为资料都是我自己写的视频脚本,所以我再清楚不过了。我用下来的感受是,它不像RAG那么机械,没有那种复读机的生硬感。它似乎跟我一样了解所有的内容。这个就是“混合记忆”带来的体验。
说实话,一年前,我跟VC的小伙伴喝茶的时候还讨论过,可以参考人类记忆的特性去打造个人AI分身。现在看到有人实现了,我是真的很高兴。
Key Takeaway
- Cursor作为编程软件,天生具备RAG能力,能对本地文件进行索引和处理,使其成为强大的知识库应用。
- Cursor与Obsidian的本地化存储特性完美结合,用户可以通过Cursor直接操作和利用Obsidian的笔记文件。
- 通过创建
cursorrules
文档,用户可以自定义Cursor的工作方式,例如优先检索本地文档、进行联网搜索,并调用特定的MCPs(如Markitdown用于PDF转换,Sequential Thinking用于复杂问题拆解)。 - Cursor的Composer功能和聊天功能可以对笔记进行总结、提炼和扩写,充当Obsidian的“超级AI插件”。
- 这种组合工作流能够兼顾本地知识和网络信息,提供逻辑性强的答案,极大提升知识管理和创作效率。
Full Content
最好用的知识库应用,就是Cursor,没有之一!
你们经常看我发的视频就知道,过去一年多,我用了太多太多知识工具。越用越发现:大道至简,用Cursor就可以了。
你想嘛,RAG能力Cursor本来就有。它是个编程软件。既然要编程,肯定得了解所有代码的情况。所以,当Cursor打开文件夹之后,就会对文件夹内的所有文档进行索引和哈希处理。像Markdown之类的文件,它会进行切块、嵌入向量。
所以,知识库应用该有的RAG能力,Cursor天生就有。不管是代码还是纯文本,它都能一样处理。而且,因为它要写代码,所以肯定要有创建文档、修改文档的能力。这就意味着,它可以帮我们直接写笔记、写文章,对吧?
这还没完。Cursor本身具备搜索能力。你不用特意添加什么工具,它就可以联网搜索,甚至直接打开一个网页。
最后,只要出现了最先进的模型,Cursor一定会第一时间支持。所以这20美元的订阅,我个人认为是非常非常划算的。当然,如果你不想用Cursor的模型,也可以填自己的API Key进去。
那么,我们该怎么用Cursor配合自己的文档进行工作呢?
我的经验是,一定要创建一个cursorrules文档。这个文档放在根目录下,用来告诉Cursor必须遵守哪些项目规则。我给你们演示一下。
你看,我在文档里规定了:
第一,回答之前都必须首先检索文件夹内的所有文档,看看有没有相关的内容可以作为上下文。
第二,光查了本地文档还不够,还得联网搜索,这样信息才齐全。
除了这两个基本要求,我还给Cursor配了两个MCP:
如果遇上PDF文档,就用Markitdown这个MCP做转化。不然Cursor就得写个Python脚本进行处理,就非常麻烦了。
如果问题有点复杂,那就用Sequential Thinking进行拆解、组织内容,这样逻辑性才强。
这两个MCP的用途和触发条件,我都给Cursor写明白了。
最后,我还附上了一个示例,包含每一步怎么处理,清清楚楚。AI绝对可以理解。
有了这一大套底层规则,Cursor就知道怎么跟我配合了。
比如我问它:如何在本地部署知识库?
首先,它花了几秒钟思考这个问题。因为我把Thinking选项打开了。
接着,它把文件夹内的文档检索了一遍。
然后,联网搜索,进一步补充信息。
最后,用Sequential Thinking对所有内容进行梳理,把逻辑整理清楚。
你看,使用这种方法,这样的流程跑下来,知识库里的内容和网上的内容都兼顾了,获得的答案逻辑性也很强。这个就是我说Cursor 最强知识库应用的原因。
我刚才演示的规则是我的需求。大家可以根据自己的需求做修改。其实你让Cursor帮你写也是可以的。
OK,以上就是本期内容。想交流AI,想成为超级个体,想找到志同道合的人,就来我们newtype社群。那咱们下期见!
Key Takeaway
- Gemini和Grok是两个被低估的顶级AI应用,它们在不同方面展现出强大的生产力。
- Gemini提供多功能体验,包括快速回答(Flash)、文章创作(Canvas)和深度报告(Deep Research),并能与Google文档和NotebookLM无缝集成,支持深度学习。
- Grok在模型回答上更具“人味”,产品设计简洁,并拥有独特的Twitter数据源,使其在获取用户真实反馈方面具有优势。
- 结合使用Gemini(获取主流媒体信息)和Grok(获取社交媒体信息)可以获得更全面和真实的洞察。
Full Content
有两个顶级AI应用还在被国人忽视。一个是Gemini,一个是Grok。
Gemini我已经推荐得足够多了。你看,过去半年,我在社群内真的是苦口婆心、反复强调。我从1.5的模型开始,用到了2.0、2.5,真的是越用越喜欢。不说那些复杂的,就说日常使用,就像我这个帖子说的:
如果你只想要个快速回答,那直接问Gemini 2.0 Flash。它速度快,推理强,运行还稳定。
如果你想要稍微深入一点,那就把Canvas打开。Gemini 2.0 Flash会按照写文章的标准来回答你。
如果你想要详尽的报告,那把Deep Research打开。Gemini 2.0 Flash会按照报告的标准来输出。
我直接给你们来个演示吧。
比如,我问Gemini:什么是Reasoning model?它很快给出一个简要的回答。
我把Canvas也就是画布打开。再问它同样的问题。这个时候,回答速度稍微慢一些,但是详细程度会高得多。在Canvas里边,你可以对文本进行排版、编辑,也可以选中一段进行提问。也就是说,用这个功能,你可以跟Gemini配合起来完成一篇文章的创作。
如果我把Deep Research打开呢?还是同样的问题——什么是Reasoning model。Gemini会帮我拆解议题,然后查找上百个网页,最终完成深度报告的输出。
你看,就这么简单的三个功能——直接对话、Canvas和Deep Research,覆盖了我们日常使用AI的主要场景。
更进一步,如果你觉得这些回答有价值,还可以把它们保存到Google文档里。
刚才介绍的三个功能,后两个都可以导出到Google文档。然后,就像我前一个视频里介绍的,打开NotebookLM,把Google文档里的相关内容全部导入,然后就可以进行深度学习了。
Gemini还有别的功能,比如画图什么的,我就不多说了。光是刚才我介绍的那些,就足以值回票价。
而且,Google还在不断更新。就在昨天,他们推出了首个混合推理模型——Gemini 2.5 Flash。你可以自主选择要不要打开思考模式,甚至还可以设定要投入多少资源进行思考。这个模型的出现,更加强化我要继续拥抱Gemini的信心。
那么,既然Gemini这么牛逼,还要Grok干嘛呢?三个原因:
第一,从模型回答的感觉上看,Grok 3要比Gemini 2.0好得多。
Gemini 2.0还是有一种生硬感、机械感,这可能就是Google独有的味道吧。而Grok 3的回答就比较有“人味”,所以我会逐渐倾向于多跟它交流。
第二,从产品角度来看,Grok最完整。
就像之前我在社群里说的,Grok没搞那么长的模型列表让用户选择,就两个按钮:深度思考,和深度搜索。没有模型之分,只有模式之分,甚至再到后边连模式都不需要选择了,AI会自主判断。这个才是正道。像OpenAI那种,有点丧心病狂了。
另外,前两天的更新,给Grok补上了Canvas和Workspace功能。Canvas和别家差不多,就是标准的画布。而Workspace,就类似知识库的功能,特别好用。
现在,Grok已经集齐目前的主流功能。产品层面已经相当成熟了。
第三,从数据源角度来看,Grok拥有别家都没有的Twitter数据。
Twitter现在是最有影响力的社交媒体,它的数据对于AI来说很重要。如果能把Twitter所代表的社交媒体数据,和Google那边掌握的主流媒体数据合并起来,那对提升AI的回答质量肯定有帮助。具体怎么做呢?我再演示一下。
其实这个方法我在社群内也分享过。很简单,Grok的Workspace功能除了支持本地文档上传之外,还支持从Google Drive里导入——这个就是关键功能。
我会先用Gemini做一轮Deep Research,把报告导入Google文档。然后,到Grok里添加这些Google文档,并且在Prompt里强调:附件信息只是参考,你要有自己的搜索和判断。另外,Twitter上用户都有哪些反馈?重点看看。
注意看Grok的分析过程。从主流媒体的信息搜集来看,它确实不如Gemini能搜到那么多。其实不只是它,OpenAI的搜索范围也有限。但是,Grok能搜集Twitter上的数据,包括帖子和评论,这个就是它的独有价值。
我之前在公关营销行业干了十几年,非常清楚只有你预算够,绝大部分主流媒体的内容都可以买,或者都可以影响。相比之下,用户的实际使用反馈就相对真实得多。所以,当我想了解的议题涉及到用户口碑的话,我肯定会通过Grok去搜集,并且跟Gemini那边的主流媒体信息进行合并。
刚才介绍的这两款AI工具的使用经验,看起来确实平平无奇,不像很多AI自媒体介绍的那些玩法那么酷炫,但这些都是能帮到你的真东西。如果你觉得有价值,还想了解更多的话,记得加入我们社群。
OK,以上就是本期内容。那咱们下期见!
Key Takeaway
- RAGFlow是一款开源的“重型知识库引擎”,提供比现有知识库产品更深度、细致的RAG设置,包括Rerank Model、RAPTOR和Self-RAG等高级功能。
- RAGFlow通过Docker部署,支持所有主流大模型提供方(云端和本地),并提供丰富的知识库创建和Assistant定制选项。
- RAPTOR技术通过多层总结形成树状结构,提升复杂问题的推理能力;Self-RAG则通过大模型自我反省,解决过度检索问题。
- RAGFlow的专业度体现在其对文档切块方式的细致选择,以及对检索和生成环节的全面设置。
- 文章强调RAGFlow作为引擎,支持通过API与其它Chatbot或Agent打通,是构建本地知识库的理想选择。
Full Content
给大家推荐一款重磅产品。
如果你对现在的知识库产品不满意,想要提升检索精确度,我推荐你试一试RAGFlow。它提供了更深度、更细致的选项,你可以根据自己文档的情况做针对性的调整。
如果你们团队或者公司想要搭建一套本地知识库,我也建议你们先研究一下RAGFlow。我之前就在社群里说过:大概率,你们自己捣鼓出来的东西不会比它更好——还不如在它的基础上做定制化。
RAGFlow是一套开源的RAG引擎。它重度集成了各种技术,而且更新很快。咱们可以来对比一下:
像AnythingLLM之类的知识库应用,在RAG设置方面,一般就允许你选择用什么嵌入引擎,以及Chunk Size多大,有多少Overlap。
再来看RAGFlow。除了Embedding Model,还可以选择Rerank Model。在知识库设置里,可以针对不同的文档类型,选择不同的切割方式,以及是否要开启RAPTOR。在Chatbot设置里,可以选择是否要开启Self-RAG。
RAPTOR这个技术简单来说就是,先把文档分成小块,然后对每一块做总结,然后再次总结、形成更高一层的概括。这么一层层地总结、叠加,最终形成一种树状的结构。对于需要多步骤推理的复杂问题,把RAPTOR开起来,效果更好。
至于Self-RAG,其实就像名字里说的那样,它会自我反省。因为,RAG虽然解决了外部知识补充的问题,但在实际使用中,有时会出现过度检索等问题。所以就需要用大模型来评判、来自我反省。
所以你看,这些更进阶的东西,我们目前常用的应用都没有,它们都还是一种轻量化的设计。RAGFlow的定位是引擎,所以它自身得足够强大,对技术得扎得足够深。既然是引擎,那就得支持向外输出马力。通过RESTful APIs,RAGFlow可以跟其它Chatbot或者Agent打通——这个以后我会在社群里详细介绍。
本期视频,我先带着大家过一遍部署和使用。
通过Docker,很容易就能完成部署。唯一需要注意的是,留出至少50G的硬盘空间,这个项目很大条的。
首先咱们创建一个RAGFlow文件夹。接着在VS Code里打开它,通过git clone命令把仓库克隆到本地。然后通过cd命令进入docker文件夹。最后运行docker compose up这行命令,就会开始下载镜像了。
因为包含了一些模型文件,所以体量挺大的。大家得耐心等等。我这边等了得有10分钟,终于全部搞定了。在Docker里把项目启动起来。打开一个浏览器页面,输入localhost就可以看到RAGFlow的页面了。
第一次进入需要注册,这个也是为了方便团队使用。我们首先点击右上角的头像,做一些设置。用户名、头像、密码什么的我就不说了,大家都懂。主要是模型设置这边。
RAGFlow支持所有主流模型提供方。国内的有月之暗面、智谱等等,国外的有OpenAI那些,基本是应有尽有了。
对于云端的平台,把API Key填进去,点击确认,它会验证是否可用。然后打开下拉列表就可以看到支持的模型了,包括Chat、Embedding、Image2Text、Speech2Text。
如果是要本地运行,比如Ollama,Base URL记得是填host.docker.internal:11434,不是localhost:11434。在模型名称这边别填错了。如果不确定的话,打开终端,输入Ollama list,就会列出你现有的所有模型。然后把名称复制、粘贴过去。
设置完成之后,就可以创建知识库了。这边主要有三点:
第一,使用什么嵌入模型。你可以用RAGFlow自带的,也可以用你自己的。
第二,切块的方式。不同的文档类型,RAGFlow有不同的切块方法。选中任意一个,在右边就会有具体的解释。从这点你就能看出它的专业度。如果你拿不准,也可以选择General。
第三,选定切块方式之后,有可能会让你设置切块的大小。默认是128,你可以根据文档的情况把它调大一点,比如256、512。
至于最下边的RAPTOR,大家可以把它打开,试一下效果。
这一切设置完成,就可以上传文档了。我这边准备了一篇关于英伟达的文章,从公众号里复制下来的,内容是关于英伟达的网络产品。
大家都知道,英伟达的GPU和CUDA是护城河。现在,趋势有变化——单卡的性能已经无法满足大模型训练和推理的需求了,集群是唯一出路。但是,要把几万块GPU组合成一个超大GPU有很高的难度。所以,英伟达正在构建自己的第三条护城河:Networking。
跑题了,咱们回到RAGFlow这边。文档传上去之后,别忘了要手动点击开始。有时会解析失败,不要紧,再来一次就好。如果还不行,就回去改一改设置,也许是切块的大小设得太高了等等。
完成之后,我们可以看到所有的文本块。
为了测试检索的效果,RAGFlow还提供了Retrieval Testing。咱们可以输入一个问题,看一下它都找到哪些相关的文本块。
对于一些场景,比如AI客服,我们会希望检索尽可能准确。于是就可以在这一步检测,不满意就回头修改。
最后是落地环节。这一步需要创建一个Assistant,也就是聊天机器人。同样地,RAGFlow也提供了丰富的定制化选项。
比如,AI用什么开场白跟用户打招呼;如果没有在知识库检索到相关的内容,AI该怎么回复;是否要开启Self-RAG;要关联哪些知识库,等等。
我敢肯定,这三页的设置就超过市面上绝大多数的Chatbot类产品。因为,RAG其实包含了两个环节:一个是Retrieval,检索;一个是Generation,生成。这一步的设置就是为了提升生成的质量,很容易被大家忽视——RAG不能只看检索。
OK,全都搞定之后,咱们来测试一个问题,看看回答效果:英伟达为什么要造交换机?
虽然回答的时间有点长,但效果还挺不错的。而且这还是在我没有做细致设定的情况下。我相信,如果花时间去调试的话,效果一定会很不错。
OK,RAGFlow的部署和基本应用就这些。从检索到生成,它所提供的设置选项应该能满足各种需求。这也是为什么我在社群里说它是Ultimate RAG Engine的原因。之后有更多进阶内容的话,我会发在社群里。在公域讲太深了挺浪费的。那咱们下期见!
Key Takeaway
- OpenGPTs是LangChain推出的开源项目,旨在替代OpenAI的GPTs,提供更彻底的自定义能力。
- OpenGPTs支持更多模型(开源、闭源、云端、本地),可完全本地化运行,数据更安全,隐私性更强,费用更低。
- OpenGPTs高度定制化,代码开放,可随意修改,并能生成公开链接供团队共用。
- OpenGPTs功能模块包括Chatbot(模型选择、指令设置)、RAG(检索增强生成,支持文档检索)和Application(Chatbot+RAG+工具)。
- OpenGPTs提供了多种工具,如通用搜索和垂直搜索工具,弥补了ChatGPT工具的不足。
- OpenGPTs的真正潜力在于自定义和二次开发,为用户提供了极高的自由度。
Full Content
看完这期视频,你就不再需要ChatGPT了。因为你完全可以用OpenGPTs替代,而且能做得更好。
OpenGPTs是LangChain前段时间推出的开源项目。看起来跟OpenAI的GPTs一样,支持一定程度的自定义,比如可以上传文档作为知识库,可以添加文生图、联机搜索等工具。不过说实话,要让AI成为真正的智能助理,这种程度还远远不够。
OpenGPTs在自定义方面做得更彻底:
- 支持更多模型,不只是OpenAI的。开源的、闭源的,云端的、本地的,都可以。
- 可以完全本地化运行。不只是大模型跑在本地,知识库中的文档也是放在本地,所以数据更安全、隐私性更强,费用也更低。
- 高度定制化。代码完全开放,可以随意修改。可玩性非常高。我去年之所以做newtype项目,就是对ChatGPT不满意,想要更高的自由度。
- 全部改装完了,还可以生成公开链接。比如给到团队共用,这一点非常棒!
OpenGPTs的安装有点麻烦。想先体验再做决定的话,官方有现成的demo,我拿这个跟大家具体介绍一下。
OpenGPTs的功能模块就三个:Chatbot、Rag,以及Application。你别看只有三个,但它们仨涵盖了所有类型的GPT应用。
Chatbot很简单,就两个设定:
第一、选择大模型。
官方在demo里把当前主流的大模型都列上了:三巨头GPT、Claude、Gemini,以及来自欧洲的Mixtral。
如果你想用别的大模型,比如通过Ollama跑开源大模型,找到backend文件夹里的app文件夹,对llms.py做一点点修改就行。
第二、下达指令,也就是大家很熟悉的Prompt。通过这个设置,AI就会按照你要求的角色、人格和做事方式去运行。
比如,我们可以创建一个专门翻译科技文章的bot。
首先定义角色和任务:
你是一位精通简体中文的专业翻译,尤其擅长将专业学术论文翻译成浅显易懂的科普文章。我希望你能帮我将以下英文论文段落翻译成中文,风格与科普杂志的中文版相似。
然后定义规则:
- 翻译时要准确传达原文的事实和背景。
- 即使上意译也要保留原始段落格式,以及保留术语,例如 FLAC,JPEG 等。保留公司缩写,例如 Microsoft, Amazon 等。
- 同时要保留引用的论文,例如 [20] 这样的引用。
- 对于 Figure 和 Table,翻译的同时保留原有格式,例如:“Figure 1: ”翻译为“图 1: ”,“Table 1: ”翻译为:“表 1: ”。
- 全角括号换成半角括号,并在左括号前面加半角空格,右括号后面加半角空格。
- 输入格式为 Markdown 格式,输出格式也必须保留原始 Markdown 格式
- 以下是常见的 AI 相关术语词汇对应表:
- Transformer -> Transformer
- Token -> Token
- LLM/Large Language Model -> 大语言模型
- Generative AI -> 生成式 AI
最后定义策略:
Key Takeaway
- 作者通过Omnivore和Readwise两款插件,对Obsidian笔记系统进行了升级,解决了外部信息同步到Obsidian的痛点。
- Omnivore负责将网页文章同步到Obsidian,支持桌面端和移动端。
- Readwise负责保存文章中的Highlights和Twitter推文,并能将同一文章的不同Highlights汇总到一条笔记中。
- Obsidian作为AI知识库的核心,本身具备AI插件和丰富的社区插件,支持云端和本地模型,且同步流畅。
- 通过这两个插件,Obsidian实现了外部信息的高效输入,使其成为更完善的AI知识库形态。
Full Content
我对我的AI知识库做了一点小升级。虽然只是加了两个插件,但是对整套工作流有很大影响。
我之前发了一期视频,介绍我的笔记系统,也就是AI知识库。它分为两大部分:一是外部信息的处理,以AnythingLLM为核心;二是笔记的记录和沉淀,以Obsidian为核心。
说实话,这套东西只能算是beta版,我并不是很满意。因为在实际使用过程中,我得把那些有用的内容从AnythingLLM搬到Obsidian里,还是太麻烦、太不顺畅了。于是,就有了我今天要推荐的两款插件。
一款叫Omnivore,我让它专门负责把网页上的文章原封不动地同步到Obsidian里。
在桌面端,我安装了Chrome插件,所以只要点一下浏览器上的按钮,那些公众号文章之类的,都会保存进我的Omnivore账户,然后再根据我事先的设置,同步到Obsidian的指定文件夹里。
在移动端也可以同步,只是操作不一样:需要安装Omnivore的APP,然后从浏览器分享给APP,就搞定了。
除了保存整篇文章,其实Omnivore也可以保存文章中的某一段话。只不过我设置了Template,即使是保存一段话,它后边也会把全文给带上——这让我感觉挺不清爽的。所以,这个工作就交给另一个插件,叫Readwise。
Readwise用起来很简单:同样是先安装好浏览器插件,然后选中一段文字,然后右键选择“Save Hightlights to Readwise”,最后根据事先设置好的格式,自动同步到Obsidian的指定文件夹里。
这个功能最让我喜欢地方是,它可以汇总同一篇文章的不同Highlights。
一篇稍微长一点的文章,往往会有好几个Highlights是我想保存下来的。很多工具的做法是,一条Highlight对应一条笔记。一篇文章看下来,会有好多条笔记生成,然后我又得特意去把它们集中到一条笔记里边,把多余的删除。
Readwise在这方面就做得很贴心。比如这篇文章我已经保存了几条Highlights,也同步到Obsidian里生成笔记了。之后如果还有新的Highlight,它会在原有的笔记基础上做补充。一篇文章消化完了,对应生成一篇笔记,这个就舒服多了嘛。
除了保存文章片段,我还用Readwise保存Twitter上的推文。它支持两种方式:在回复里@Readwise让它save,或者把推文链接私信发它。我不想敲字,所以选择私信的方式。
Readwise本身是个聚合器,跟市面上主流的工具都打通了。它甚至可以把Kindle里的笔记同步过来,特别强悍,大家可以试试。
所以,有了这两个插件,我Obsidian里的文件夹做了调整,新增了Input,里边放三个子文件夹:
Articles专门放Omnivore那边过来的文章,我在插件的设置里的Folder选项把文件夹目录填进去了。
Highlights和Tweets放Readwise的内容。除了在插件的设置里填上文件夹名称,我还在网站的后台更改了Category Folder的名字,把Articles改成了Highlights,不然就跟Omnivore那边重合了。
这两个插件都支持你自定义内容的格式。我参考了网上大佬的template,然后自己做了修改。这些格式我都发在newtype社群了,知识星球或者Patreon的小伙伴可以直接拿去用。
做完这一切的设置、调整之后,Obsidian就成为我的AI知识库的核心了:
第一,它本来就有AI插件,比如之前介绍过的Copilot、Text Generator,云端和本地的模型都支持,做一些对话、内容生成、知识库查询完全没问题。
第二,它本来就是一款非常好用的笔记软件,社区插件超级丰富。在PC、Mac、iPhone之间通过iCloud同步也很顺畅。
通过刚才介绍的两款插件,把外部信息同步这一环补上之后,这才是我比较满意的AI知识库的形态。
OK,以上就是本期内容。大家有什么想聊的,来newtype找我,我都在。那咱们下期见!
Key Takeaway
- 作者的AI笔记系统分为外部信息处理(Anything LLM)和笔记内容生成(Obsidian)两部分。
- Anything LLM支持多种大模型和向量数据库,能处理PDF和公众号文章,用于资料消化和存储。
- Obsidian是作者的终极笔记选择,因其速度快、数据本地化和丰富的AI插件(如Copilot)。
- 笔记系统通过Anything LLM过滤外部信息,将有价值部分转化为Obsidian笔记,再利用AI辅助内容生成。
- 笔记分类采用PROJECTS、AREAS、FLEETING、PERMANENT四种类别,以实现条理化管理。
- 强调工具是次要的,核心在于明确需求和逻辑,通过流程和工具构建系统。
Full Content
最近,我对我的笔记系统做了一次大升级,加上了大模型驱动的知识库,并且对整体的逻辑做了大调整。
我在这边分享一下思路和具体做法。大家可以先抄作业,然后边用边改。
整套系统分成两个部分:
第一个部分是外部信息的处理。
每天我们会看到大量的内容,有PDF格式的论文和研报,有网页形式的文章,等等。我们做的笔记,都是从这些外部信息的阅读、消化开始的。
那么,这么多的资料,怎么消化、存储、检索?这是这个环节的难点,也是AI发挥最大作用的地方。
第二个部分是笔记内容的生成。
这部分的核心问题有两个:
1、用什么样的逻辑做分类是最合理的。我之前就很烦,要么是分类太泛了,显得没啥意义;要么是突然有条新笔记,却发现哪都放不进去,就很无语。
2、用什么软件最合适。要快,要隐私安全,还要有AI功能作为辅助。
先说第一部分,对外部信息的处理,我用的工具是Anything LLM。
我在视频里、在知识星球里推荐过好多款这类型的工具。综合用下来,Anything LLM是最符合我需求的。两个原因:
第一,它可以接入市面上主流的大模型、嵌入模型和向量数据库。
比如,闭源大模型方面,御三家——OpenAI、Anthropic、Google,你填入API Key就可以使用。
开源大模型方面,Ollama和LM Studio它都支持。你把链接和端口填进去就搞定了。
在最近更新的版本里,Anything LLM把Ollama也集成进来了。它提供了一系列模型,比如我最常用的Mistral 7B,通过软件直接下载就可以用了。
有些模型实在太大了,本地肯定跑不了,那就花点钱、跑在云端,然后接到本地来用。
那么,要这么多种接入手段,有什么用呢?
我平时主要用两台电脑:
在家的时候,用台式机,也就是之前介绍过配置的那台PC,性能还OK,跑本地大模型没问题。
出门的时候,带的是Macbook Pro。这机子已经非常老了,是2017年买的,现在跑个大模型是没戏,所以只能通过API调用OpenAI的模型。
除了可以根据不同配置的电脑选用不同大模型之外,Anything LLM还支持让不同的Workspace用不同的模型。比如,有的Workspace对应的资料全是英文的,那我用Mistral就好;有的如果是中英文都有,那我用qwen-1.5。
第二,它除了支持PDF之类的文档,还能把公众号文章的内容扒下来。
我平时接收到的中文信息,有很大一部分来自公众号文章。
腾讯应该是有反扒的手段。我试过很多同类型的产品,不是谁都能通过链接把公众号文章内容给扒下来的。
这就是我对外部信息的处理方法。把AI知识库用来存储资料,帮我快速消化资料。之后需要找什么的时候,还能快速搜索。这个环节处理得好的话,其实后边的笔记环节就很好搞了。
我算是笔记应用的老用户了。从Evernote开始,得有十年了吧。这么多产品用下来,我目前的终极选择是:Obsidian。
我知道,肯定会有人问,为啥不用现在超火的Notion?两个原因。
第一,太慢了。
在Notion里,很多操作都会有那么一点点的loading时间,这是我接受不了的。我觉得,笔记应用就该像实体的笔记本一样,打开就能看,翻到哪是哪。
Obsidian就没有这种问题,特别丝滑。
第二,数据放在别人家。
在前边的外部信息处理上,我没有选择本地数据库是以为,那些文档、网页全是公开信息,没有任何隐私安全问题,所以放到云端数据库我无所谓。
但是笔记不一样。这是真正的隐私数据,我绝对不会把它放到别人家的数据库去。这是要积累很多年的。万一哪天Notion出点事儿,那就麻烦了。
Obsidian里的每一条笔记,都是一个md格式的文件,存在本地。你愿意的话,可以随时把它们拷到别的地方去。
至于Notion的AI能力,Obsidian也有。这款软件支持社区插件,可以在核心之上添加各种功能,其中就包括调用大模型。
Copilot这个插件特别好用。你可以用OpenAI、Google之类的闭源大模型,也可以连接Ollama、LM Studio去使用开源大模型。
更厉害的一点是,它还自带RAG能力,能把你的所有笔记变成一个知识库。比如我问AI一个问题,AI会参考我所有的笔记给出回答,并且回答末尾还有来源。点击就能跳转到对应的笔记。
这样一来,一个梯队就形成了:
首先,我把所有外部信息都存进Anything LLM,在AI的帮助下去消化和整理。
Key Takeaway
- PDF格式的复杂性(结构、编码、信息丢失)导致AI知识库在处理PDF时精确度不足。
- 提升AI知识库效果的关键是先将PDF转换为Markdown等方便大模型提取文本的格式。
- Mathpix是一款便捷的PDF转Markdown工具,支持PDF和图片上传,可导出多种格式,并能OCR识别LaTeX公式。
- Marker是另一个开源的PDF转Markdown项目,支持多语种、公式转换和图片提取,可本地部署。
- 文章强调了原始数据处理对RAG效果的重要性,并推荐了两种PDF转Markdown的工具。
Full Content
经常有人抱怨AI知识库精确度不够、答非所问。我有时候想想,会觉得其实AI也挺冤的,因为很有可能不是它能力不行,而是你一开始给的文档就有问题,导致它提取文本有错误、不完整,那后边一连串的检索、生成怎么可能好呢?
比如最常见的PDF格式,我们阅读起来是没啥难度,但大模型要提取文本就遭罪了。
第一,PDF的结构很复杂,有文本、有图像、有表格,还有字体和布局信息。大模型很难理清楚这些结构,自然也就不好从中提取出文本来。
第二,不同PDF可能使用不同的字符编码,这会导致文本解析错误。
第三,即使成功提取出文本,也可能丢失段落、标题这些很重要的信息,造成对内容的理解出现差错。
所以,要提升AI知识库的效果,先把PDF转换成方便大模型提取文本的格式。本期视频我介绍两个工具。一个是Mathpix,现成的产品,我在newtype社群里推荐过。另一个是Marker,更早之前我也在社群内推荐过。正好有小伙伴问具体怎么部署,我一会儿就具体讲讲。
先来看Mathpix。
这款产品桌面端和移动端都有。我用的是网页版。它支持上传PDF和图片。PDF的话,一般是论文;图片的话,一般是手写的笔记或者老师的板书。导入资料后,它会进行识别,然后要么存在软件里作为一条笔记、多端同步,要么导出成Markdown、Word等格式。
作为测试,我这边上传一篇大概8页的论文,它里边包含了PDF最常见的复杂格式。大概几秒钟,Mathpix就处理完成了。然后选择导出Markdown,就能得到一个md格式的文件。
把它放到Obsidian里,可以看到,转换效果挺不错的:原本分成左右两栏的内容,它都给归到一栏里;小标题、分段、表格什么的都在。
我之所以选择Obsidian是因为,它的笔记本来就是md格式,并且Copilot这款AI插件有RAG功能。现在有了PDF转Markdown的工具,以后我对论文的阅读、消化还有记笔记就可以在一个软件里搞定了。
如果你是STEM学生或者科研工作者,肯定会爱死Mathpix——一键OCR就可以输出LaTeX公式太方便了。如果你有大量PDF文档想喂给大模型作为参考资料,也可以考虑订阅,一个月不到5美金。
多说两句,我个人很喜欢Mathpix创始人的思路。他提出一个概念叫Micro-SaaS,意思是,从一个细小且集中的用户痛点切入,提供极度专业化的产品和功能。这种专注利基市场的打法,很适合今天这个AI时代。
OK,Mathpix是最省心的解决方案。当然,如果你不想花这点钱的话,也行,那就本地部署Marker来转换。
Marker是我在GitHub上找到的一个项目,人气挺高的。它同样是把PDF转成Markdown,支持多语种,可以把公式转成LateX,可以把图片也一并提取出来,支持GPU、CPU。
要部署很容易,还是那句话:有手就行。
第一步,老规矩,创建环境然后激活,这个就不用我介绍了。
第二步,安装PyTorch。大家可以去官网根据自己的情况做选择,然后通过特定的命令去下载、安装。如果没安装CUDA,那就先去老黄那边下一个。
第三步,安装Marker。pip install就可以。
这三步完成后,就可以开始使用了。
根据GitHub上的指导,我们需要通过一行命令来运行。这行命令分为四个部分:
第一部分,也就是命令的开头,告诉机器你是要转一个文档还是多个文档。如果是一个的话,就用marker single。
第二部分,告诉机器,需要转换的文档存在哪里,也就是文件地址。
第三部分,告诉机器,转换完之后,该把文档存到哪里。
第四部分是一些参数配置,比如默认batch是2个,需要消耗大约3G的显存。这个数值设得越高,需要的显存越多,转换速度也就越快。
理解这行命令的意思,每次使用就非常简单了。如果你的文件夹一直不变,其实就改一下文件名就好。
作为演示,我还是用刚才那个论文,咱们可以对比一下效果。
运行命令,就能看到每一步的进度条。大家注意看这边:Marker会先做检查,然后找到reading order阅读顺序,最后把md文件存到指定文件夹内。
除了正文,论文里的表格都单独提取出来了。
我用VS Code预览一下成品。可以看到,效果还不错。
不过,官方也强调了,他们并不能做到100%成功提取公式、表格,因为PDF这个东西太复杂、太奇怪了,没法打保票。所以转换完成之后,建议大家还是快速看一眼、检查一遍。
如果要转换多个文档也是同样思路,用命令设置存放的位置和输出的位置,可以把整个文件夹里的PDF全都转换了。我这边就不演示了,大家试一次就全明白了。
OK,以上就是今天的内容。其实我很早之前在社群里提过,不管你用什么RAG工具和技术,第一步都得先对原始数据做处理,然后才能输入进去,才能保证最终效果。大家如果想进一步交流的话,来newtype,我都在。那咱们下期见!
Key Takeaway
- QAnything是一款适合普通用户的知识库产品,支持创建多个知识库,并能处理文档和网页内容。
- QAnything的机器人功能可将知识库以链接形式发布,用于团队协作或AI客服。
- QAnything在RAG技术上有所创新,采用了Rerank技术(二阶段检索)提升检索精确度。
- 文章强调了国内厂商在AI应用方面的优势,以及知识库作为用户数据资产的重要性。
- 知识库的未来发展方向包括根据语义进行文本切割,以及支持多模态内容。
Full Content
今天给大家介绍一款普通用户也能马上上手的知识库。
我有一个感觉:国内厂商要开始卷知识库类产品了。现在大体上有两个阵营在蠢蠢欲动。
一个是模型厂商阵营,像月之暗面、Minimax。在研发大模型的同时,他们一定会围绕知识库去打造面向C端的产品。我打个比方你就理解了:
如果AI是【水】的话,那么今天每家都有的Chatbot就是【瓶装水】。这些【瓶装水】已经满大街都在卖,价值肯定越来越低。即使是头部的ChatGPT也会面临用户流失的压力。
所以,围绕AI这个【水】去开发新品类,一定是各家模型厂商必须要做的事儿。而知识库已经是公认的刚需,C端有需求,B端也有市场,而且在Chatbot上做加法,逻辑上是通的,所以大家一定会往这个方向走。
另一个阵营是传统互联网厂商。原因也很简单。
知识库里装的是什么?用户数据资产。而且是用户最重视的数据资产。这些数据资产落在哪个平台,用户就会留存或者迁移去哪边。所以,谁能利用好大模型技术,先打造出性能最好、最容易上手的知识库产品,谁在这一轮AI竞赛中就能守住地盘,甚至去挖别家的墙角。
传统互联网厂商阵营中,我看到走得比较快的,是网易。这家公司一直都很有做产品的基因。本期要给大家推荐的产品叫【QAnything】,我前两天在知识星球里推荐过。
我之前介绍了很多知识库的项目,实话实说,都需要一定的动手能力才能跑起来,其实不太适合普通用户。
我觉得对大家来说,在这个AI时代,先上手,先用起来,比什么都重要。
QAnything就是特别适合普通用户的产品。产品很直观,而且比很多老外的产品都做得更好。
就拿知识库的创建和选择来说吧。
很多同类型产品,要么是只有一个大知识库,要么虽然可以创建多个知识库,但只能选定一个知识库,只能针对一个知识库内的文档进行对话。
QAnything支持创建多个知识库。所以,你可以像使用文件夹一样来管理资料。比如我就创建了三个知识库:
- 一个放大模型相关的论文,都是PDF文档;
- 一个放我newtype公众号的文章,其实也就是我视频的脚本;
- 一个放平时看到的、想保存的各种文章。
如果要选择不同的知识库,非常简单,就点几下就好了,看一眼就明白什么意思。
在做应用方面,你永远可以相信国内厂商。
我特别喜欢QAnything的Slogan:万物皆可问。这个就是技术趋势。
目前可以提问的对象是文档和网页。等之后大模型多模态速度提升、费用下降之后,视频肯定也会支持。
上传文档的功能我就不多说了。大家可以多试试【添加网址】功能。我把平时看到不错的公众号文章都传了一份进去。因为我发现,经常会想不起来在哪篇文章里看到的一个观点。那现在有了知识库,我直接问AI就好了,相当于模糊查询,还挺实用的。
在知识库的基础上,有道团队还加了机器人功能。你可以给机器人设定一些Prompt,然后关联上知识库,最后以链接的形式发布出去。
在我看来,机器人功能有两个作用。
第一,把链接分享给同事。比如,你可以安排一个实习生小朋友定期把团队文档上传到知识库里,然后以机器人的形态对内发布。这对团队来说肯定有帮助。
第二,把链接分享给客户。比如,可以把链接挂到公众号菜单栏里,当作AI客服来用。
之所以会有这个想法,是因为我看到,在知识库里,除了上传文档集,还可以上传问答集,也就是大家最熟悉的QA。比如公司介绍、产品介绍等等。这些信息,每个公司肯定有有现成的,传上去就能直接用起来了。一个简单的AI客服就搞定了。
我这几天使用下来发现,QAnything的精确度还不错。有道团队对RAG技术还是有关注的,他们使用了Rerank技术,也就是官方所说的【二阶段检索】。
Rerank并不是什么特别高深的技术。大概半年前,我看油管就有大佬在介绍,并且分享了代码。它的原理很简单:
根据用户的提问,我们从向量数据库里筛选出50个相关的文本块。但是,肯定不能把这50个全都输入给大模型,一方面是上下文长度有限制,另一方面是这50个文本块中肯定有些相关性还差一些。这时就进入Rerank阶段,对这50个文本块进行相关性排序,比如,我们设定了把相关性最高的3个或者5个给到大模型。
这么一套操作下来,由于添加了Rerank步骤,那检索的精确度肯定会提升。不过代价也是有的,那就是速度下降。
RAG技术里有很多门道。刚才说的是检索阶段的Rerank。在前边的文本切割阶段也有很大提升的空间。
传统的做法,不管你怎么设定文本块的大小,其实都不是最合适的。最理想的做法,是根据语义做切割,这样才不会把上下文意思给硬生生切断了。那谁来做这个判断呢?当然是大模型啦。
像这些新发现、新技术,国外一直在出。希望咱们国内厂商也能保持高度关注。我发现,国内对技术的了解落后非常多。这种信息差比技术差还大。
OK,以上就是本期内容。接下来,我会多介绍一些门槛不那么高的产品,让更多人都能快速用起来。大家如果有问题的话,可以来知识星球找我。咱们下期见!
Key Takeaway
- Cohere及其Command R+模型是专注于RAG和Agent的“业界清流”,其创始人是Transformer论文作者之一。
- Cohere提供生成模型(Command R+)、嵌入模型(Embed)和重排序模型(Rerank),特别适合复杂RAG工作流和多步骤工具使用。
- Command R+在某些方面性能达到GPT-4级别,且有量化版本可本地运行。
- 文章介绍了通过AnythingLLM和OpenRouter调用Command R+的API方法,以及本地部署的硬件要求。
- 强调了开源模型和开放权重模型的重要性,鼓励用户尝试GPT之外的优秀模型。
Full Content
我最感兴趣的AI公司、最喜欢的大模型,不是OpenAI和他们的GPT,而是Cohere,以及他们的Command R+。
这家公司在国内是没啥名气——大部分人只知道OpenAI,甚至连Anthropic这种级别都很少被关注。但是在业内,Cohere绝对是不容忽视的存在。
别看这家公司的创始人非常年轻,要知道,人家可是《Attention is All You Need》的作者之一。正是这篇论文,开启了这一轮大模型技术的爆发。
在创业之初,他们本来是准备面向C端市场的。后来发现C端产品比想象中的难搞多了,于是果断转向B端市场,帮助企业把大模型落地业务里。Cohere目前提供三类模型:
1、生成模型。Command系列。支持接收用户的指令,也具备对话能力。最新的Command R+非常适合复杂的RAG工作流,以及多步骤的工具使用。它在某些方面的性能甚至达到GPT-4级别。 2、嵌入模型。Embed系列。其中支持多语种的嵌入模型,长长的列表中就包含中文。 3、重排序模型。Rerank系列。对文本块进行相关性重新排序,是提升检索精确度的关键。
这么说吧,Cohere的专精方向,正好就是我长期关注的方向——RAG和Agent。
之前我做了好多期关于个人知识库的视频,因为我有一个判断:
今天最重要的两个技术,Crypto解决的是生产关系问题,AI解决的是生产力的问题。所以,大模型技术的应用落地,肯定是先落在生产力工具层面,需要RAG和Agent的带动。
一直以来,只有少数公司愿意针对RAG和Agent做大模型的优化——大多数还是蒙头搞通用大模型。所以当我了解到还有Cohere这样的“业界清流”存在时,我就对他们保持高度关注。
Cohere最新一批模型推出有一段时间了。我最近看了一下,我平时在用的、也是我之前一直在推荐的工具,都支持他们的API调用了。而且Command R+也有了量化版本,可以跑在本地。于是,就有了这一期视频。
先说API的调用。
大家如果使用AnythingLLM的话,记得看看右上角的版本号。如果版本号是橙色的,说明有新版本。下载、覆盖安装之后,在模型下拉列表中就能看到对Cohere的支持。
至于Obsidian的AI插件Copilot,它的模型列表中并没有Cohere,但是有OpenRouter。这是一个第三方平台,通过它,你可以调用各种大模型,包括Command R+。
所以咱们要做的,就是把OpenRouter的API Key填进来,然后把Command R+的名称复制粘贴过来就OK。之后每次使用,模式选Vault QA,模型选OpenRouter,就可以使用Command R+生成内容了。
通过API调用是最简单的方法。如果你的电脑配置比较给力的话,还可以试试本地运行。
Command R+有1040亿参数,算是很大的模型了。即使是量化版,文件都超过20G。要下载的话,通过LM Studio就可以。
我的PC是32G内存,显卡是3060。根据LM Studio的提示,只有三个版本可以在我的机子上跑。而且即使能跑,也只能把一部分模型放到显存里。看来还是太吃力了。我估计用64G内存加4090显卡应该能顺畅跑起来。
Anyway,不管云端还是本地,我都强烈建议大家都试试。我这几天用下来的体感是,Command R+的生成效果挺好的,我非常满意。
以后知识库的应用,如果要用云端的大模型的话,我肯定就用Command R+。至于本地,我还是选择Qwen,感觉比Llama3的量化版更好一些。
最后多说一句,大家别只盯着GPT一个模型。开源的模型、开放权重的模型当中,也有很多非常优秀的模型。多试试,没准就有惊喜了。
OK以上就是本期内容。咱们下期见!