非结构化文档->memgraph提取(GraphDocument)
非结构化文档->memgraph提取(GraphDocument) https://www.llamaindex.ai/blog/constructing-a-knowledge-graph-with-llamaindex-and-memgraph 这里用LlamaIndex可以自动做到这一点,但是缺点是需要openai的key,用不了mass的 还有一种方式使用from langchain_experimental.graph_transformers import LLMGraphTransformer,其用提示词将非结构化的Document转化为GraphDocument: 提示词涵盖以下方面: 概述:定义任务和目标。 节点标注:规定节点类型的一致性和基本性。 关系标注:规定关系类型的一般性和永恒性。 共指消解:实体消歧,确保实体一致性。 严格合规:要求严格遵守规则。 将纯文本文档中的信息转化为 Memgraph 图数据库中的 节点 (nodes) 和 边 (edges),主要涉及以下几个步骤: 解析 (Parsing) / 提取 (Extraction): 从...
Gemini CLI上下文压缩魔改实践
仿照 Gemini CLI 的上下文压缩:智能对话历史管理 引言 在构建基于大语言模型(LLM)的智能体时,一个常见的挑战是如何处理不断增长的对话历史。随着交互轮次增加,上下文长度可能迅速接近模型的 token 限制,导致后续响应质量下降甚至请求失败。传统的截断方法会丢失重要信息,而简单的摘要又可能遗漏关键细节。 Google 的 Gemini CLI 在这方面提供了一个优雅的解决方案:聊天历史压缩。当对话接近 token 限制时,系统会自动将历史压缩为一个结构化的摘要,既保留了核心信息,又大幅减少了 token 占用。Infini-Agent-Framework 借鉴了这一设计思想,实现了自己的上下文压缩模块,本文将深入解析其设计与实现。 压缩模块概览 Infini-Agent-Framework 的压缩模块位于 infini_agent_framework.langgraph.compression,提供了以下核心能力: 阈值触发:当对话历史 token 数超过预设阈值(默认 70% 的模型最大长度)时自动触发压缩。 结构化摘要:使用 LLM 将历史转换为格式化的 XML ...
Python异步编程完全指南:从新手到实践
Python异步编程完全指南:从新手到实践 引言 在现代Python开发中,异步编程已成为处理I/O密集型应用的关键技术。无论是Web服务、网络爬虫还是数据处理,异步编程都能显著提升程序性能。本文将从基础概念出发,逐步深入探讨Python异步编程的核心机制。 一、异步编程的核心思想 1.1 同步 vs 异步:一个生动的比喻 想象你在咖啡厅点单: 同步方式:你点一杯咖啡,然后站在原地等待咖啡制作完成,期间什么也不做 异步方式:你点完咖啡后,立刻去找座位、看手机、和朋友聊天,咖啡做好了服务员会通知你 这就是异步编程的本质:在等待耗时操作时,不阻塞程序执行,而是继续处理其他任务。 1.2 事件循环:异步编程的"大脑" 事件循环是异步编程的调度中心,它负责: 管理和调度所有异步任务 监控任务状态 在适当的时候恢复挂起的任务 123456789import asyncioasync def main(): print("Hello") await asyncio.sleep(1) print("World"...
NCCL通信原语
NCCL通信原语 参考: https://blog.csdn.net/2401_84208172/article/details/142610913?fromshare=blogdetail&sharetype=blogdetail&sharerId=142610913&sharerefer=PC&sharesource=a1150568956&sharefrom=from_link 1. Broadcast 其实就是把自己卡上面的东西让所有卡都知道 2. Scatter 其实就是把自己的东西分成多块,按照顺序向其他GPU发送data block 3. Reduce 就是把所有卡的部分在自己卡上面作一个sum。注意这里只有自己的卡作sum 4. Gather 其实对应于Scatter,是把分布在其他卡上的data block在自己卡上面拼起来。注意,这里也是只有自己这一张卡 5. AllReduce 每张卡都对所有卡作一个sum=reduce scatter+all gather, 通信成本也等于这俩加起来 官方说法:将每个节点的数据规约并...
langfuse交互data和task交互原理
langfuse交互data和task交互原理 langfuse实战:https://zhuanlan.zhihu.com/p/708647880 1. run_experiment 方法核心流程 根据 Langfuse.run_experiment() 方法的实现,data 和 task 的交互过程如下: 12345678910111213def run_experiment( self, *, name: str, run_name: Optional[str] = None, description: Optional[str] = None, data: ExperimentData, # 实验数据 task: TaskFunction, # 任务函数 evaluators: List[EvaluatorFunction] = [], run_evaluators: List[RunEvaluatorFunction] = [], max_concurrency: in...
Manus最佳实践
Manus最佳实践 https://manus.im/zh-cn/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus
为什么 RAG 的语义检索在信息压缩下仍然可行?
为什么 RAG 的语义检索在信息压缩下仍然可行? 在 RAG(Retrieval-Augmented Generation)系统中,检索阶段的核心逻辑是这样的: 把用户输入(query)和知识库中的文本块(chunk)都转化为固定维度的 embedding 向量,然后通过相似度计算来找到最相关的文档片段。 然而,这里会出现一个令人疑惑的现象—— 为什么短短几十个字的 query 向量,可以与上千字的文档片段向量放在同一个空间中比较? 毕竟,它们的原始信息量差距巨大,却被压缩到同样维度的 embedding 向量里。 本文将深入分析这个“语义压缩悖论”,解释为什么 RAG 的 embedding 检索机制依然是可行的。 一、RAG 检索的核心机制 RAG 的检索阶段要解决的问题是: “给定一个问题,找到语义上最相关的文本片段。” 实现方式通常如下: 对文档进行切块(chunking) 每个文档被分成 200~1000 字左右的小段。 对文本进行向量化(embedding) 使用预训练模型(如 text-embedding-3-large)将文本转化为 d 维向量。 存入...
🌌 自然语言语义与高维空间中的低维流形:为什么嵌入模型可行?
🌌 自然语言语义与高维空间中的低维流形:为什么嵌入模型可行? 在现代自然语言处理(NLP)中,几乎所有的语义计算都建立在「向量空间假设」之上: 我们把句子、段落或文档映射为高维向量(embedding),并通过计算这些向量之间的相似度来度量语义接近程度。 然而,一个问题常被忽略—— 既然 embedding 通常是 768、1024 或 1536 维的,那么自然语言的语义真的需要这么高维的空间吗? 为什么短短二十个字的句子可以与上千字的文档 chunk 在同一个向量空间中计算相似度? 答案的关键在于:自然语言的语义实际上分布在高维空间中的一个低维流形(low-dimensional manifold)上。 🧠 一、什么是低维流形? 简单来说,**流形(manifold)**是一个局部上看像低维平面的弯曲空间。 想象一下: 一张纸是二维的; 把它卷起来放进三维空间,它依然是“二维流形”; 尽管嵌入在高维空间中,它本质上只有两个自由维度。 同样地,在 1536 维的 embedding 空间中,语言语义并没有自由地充满整个空间,而是集中在某个低维的、弯曲的区域上。 从数...
Rust-just安装
Rust-just安装 在遇到 pip install 无法找到所需包时,尤其是像 rust-just 这样的包,您可以尝试以下几种方法来直接使用二进制文件运行: 方法 1: 查找预构建的二进制文件 GitHub Releases 页面: 访问 rust-just 的 GitHub 页面,通常项目会在其 releases 页面发布预构建的二进制文件。检查是否有适合您系统的版本。 如果有,您可以直接下载二进制文件并运行。 其他二进制发布平台: 例如,某些Rust项目可能会在 Releases on GitHub 或 Rust官方发布页面上提供二进制文件,您可以直接下载相应的版本。 方法 2: 从源代码编译二进制文件 如果没有找到预构建的二进制文件,您可以尝试从源代码编译并运行它。 安装Rust(如果还没有安装的话): 如果您的系统上没有安装Rust,可以通过以下命令安装: 1curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 然后启动新的shell以加载Ru...
Langfuse 和 ClickHouse 结合使用
Langfuse 和 ClickHouse 结合使用 https://clickhouse.com/blog/langfuse-and-clickhouse-a-new-data-stack-for-modern-llm-applications 这篇博客文章介绍了 Langfuse 和 ClickHouse 结合使用,如何为现代大型语言模型(LLM)应用程序创建一个新的数据栈。文章的主要目标是展示如何通过将 Langfuse 和 ClickHouse 组合,解决 LLM 应用中的数据存储、追踪、监控和分析挑战。 下面是对这篇博客内容的详细总结: 背景介绍 现代的大型语言模型(LLM)在企业中的应用越来越广泛,尤其是自然语言处理(NLP)任务,如智能客服、内容生成、问答系统等。然而,LLM 的应用面临着一系列挑战,尤其是在数据管理方面。 为了高效地支持 LLM 以及它们产生的庞大数据,开发人员需要一个强大的数据栈。Langfuse 和 ClickHouse 的结合旨在为这种需求提供解决方案。 Langfuse 简介 Langfuse 是一个开源的 LLM 监控平台,帮助开发人员...











