Ask LLM by program

What’s RAG RAG is a technique for augmenting LLM knowledge with additional data. RAG 是一种以额外数据来增强 LLM 知识的技术 以私有或者较新的知识插入到给模型的提示的过程就叫检索增强生成 Concepts Indexing Load: First we need to load our data. This is done with Document Loaders. 载入我们的知识 Split: Text splitters break large Documents into smaller chunks. This is useful both for indexing data and for passing it […] →Read more

5W1H8C1D

5W When Where Who What Why 1H How 8C(Constraint) Performance Cost Time Technology Reliability Security Compliance Compatibility 1D Data →Read more

如何通过知识图谱对大语言模型返回的结果做 RAG?

通过知识图谱(Knowledge Graph, KG)对大语言模型(LLM)返回的结果进行检索增强生成(Retrieval-Augmented Generation, RAG)可以提高生成内容的准确性和一致性。以下是一个概述如何实现这一目标的步骤: 1. 构建或使用现有的知识图谱 数据来源: 知识图谱通常由结构化数据(如关系数据库)、半结构化数据(如JSON、XML)、以及非结构化数据(如文档、网页)构建而成。 存储和查询: 可以使用Neo4j、Memgraph等图数据库来存储知识图谱,并通过Cypher或其他查询语言进行查询。 2. 结合知识图谱进行查询增强 查询扩展: 在用户发出查询后,使用知识图谱对查询进行扩展。例如,如果用户询问某一特定领域的问题,可以使用知识图谱扩展相关领域的概念和关系。 上下文检索: 在生成答案之前,使用知识图谱对相关上下文信息进行检索,这些信息可以包括实体之间的关系、属性、历史记录等。 3. 与大语言模型结合 预处理: 在将用户的查询输入大语言模型之前,先用知识图谱检索相关的上下文信息,并将这些信息附加到查询中,以增强模型的理解。 生成与验证: 大语言模型生成初步答案后,可以通过知识图谱对生成的内容进行验证和修正。例如,验证生成的实体关系是否正确,或对关键事实进行交叉验证。 后处理: 使用知识图谱进行后处理,以确保生成的结果与知识图谱中的已知事实一致。 4. 实现流程 用户查询: 接收到用户查询后,系统首先通过知识图谱检索相关实体和关系。 检索增强: 将检索到的信息与用户查询一起传递给大语言模型,增强生成过程。 结果验证: 对生成的结果进行验证,确保其与知识图谱中的信息一致。 结果返回: 将经过验证的答案返回给用户。 5. 技术实现 Python与图数据库: 使用Python脚本连接图数据库(如Neo4j),通过Cypher查询获取知识图谱中的信息。 与大语言模型集成: 使用Python库(如OpenAI的API)与大语言模型交互,将检索到的上下文信息传递给模型,并获取生成的答案。 6. 示例代码 下面是一个简单的Python示例,展示了如何结合Neo4j的知识图谱与OpenAI的大语言模型进行RAG: from neo4j import GraphDatabase import openai # 连接到Neo4j数据库 uri = “bolt://localhost:7687” […] →Read more

review microservice, is it valuable and cose-effective

微服务并不一定强于单体服务 微服务对运维管理有更高的要求 →Read more

fastapi with celery

Overview 这其实是典型的发布订阅模式, 生产者发布任务到任务队列中, 消费者从任务队列中消费任务. 这里的任务队列是 Redis, 也可以使用 RabbitMQ Quick start from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Item(BaseModel): item_id: int name: str description: str = None @app.get("/items/{item_id}", response_model=Item) async def get_item(item_id: int): return {"item_id": item_id, "name": "Some item", "description": "Description of the item"} start cerely by docker compose version: '3.8' […] →Read more

用 Cypher 来查询图数据库

Cyper 作为声明式查询语言, SQL 在计算机行业无人不晓, 无人不知. 而 Cypher 就是 Graph Database 图数据库的 SQL. Cypher is unique because it provides a visual way of matching patterns and relationships. Cypher was inspired by an ASCII-art type of syntax where (nodes)-[:ARE_CONNECTED_TO]->(otherNodes) using rounded brackets for circular (nodes), and -[:ARROWS]-> for relationships. Cypher 用"圆括号"来表示节点, 用"方括号,连接线及箭头"表示关系 When you write a query, […] →Read more

LLM 之用CRISPE 框架构建输入

CRIPSE 1. CR – Capacity and Role: 能力与角色 希望模型扮演怎样的角色, 以及角色所具备的能力 例如: 你是一个精通算法的经验丰富的 C++ 程序员 2. Insight 洞察力 完成任务所依赖的背景信息 例如: 根据现代 C++ 语言的最佳实践 3. Statement 指令 希望模型做什么, 任务的核心关键词和目标 例如: 编程一个类, 实现 24点游戏, 即输入随机的四个数字, 数字范围在1 和9之间, 求出它们是否能通过加减乘除运算得出最终结果为数字 24, 举例如下 输入: 1, 3, 2, 4 计算: 413*2 结果: 24 4. Personality 个性 希望模型以什么风格或方式输出 例如: 请用 C++ 写一个类, 并有一个 […] →Read more

如何计算 mpegts 文件的长度

Background ts文件为传输流文件, 视频编码主要格式 h264/mpeg4, 音频为 acc/mp3。 ts文件分为三层: 1) ts 层Transport Stream、 ts 层就是在pes层加入数据流的识别和传输必须的信息 ts 流: 由定长的TS包组成 (188字节) , 而TS包是对PES包的一个重新封装 (到这里, ES经过了两层的封装) 。应用于相对有错环境下的传输与存储 (如DVB中) , 其基本单位是TS包, 长度固定188字节。日本的DVB-S广播系统采用192个字节的TS包, 美国采用204个字节的TS包, 多加了16个字节的前向纠错校验码 (FEC) 。 2) pes 层 Packet Elemental Stream、 pes 层是在音视频数据上加了时间戳等对数据帧的说明信息, pes 流: PES流是ES流经过PES打包器处理后形成的数据流, 在这个过程中完成了将ES流分组、打包、加入包头信息等操作 (对ES流的第一次打包) 。PES流的基本单位是PES包。 3) es 层 Elementary Stream. es 层就是音视频数据, es 流: 有三种, 图像数据流, […] →Read more

Alert Manager

The Alertmanager handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integration such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts. Grouping 分组 Grouping categorizes alerts of similar nature into a single notification. […] →Read more

rust first step

installation curl –proto '=https' –tlsv1.2 -sSf https://sh.rustup.rs | sh Cargo Cargo: the Rust build tool and package manager When you install Rustup you’ll also get the latest stable version of the Rust build tool and package manager, also known as Cargo. Cargo does lots of things: build your project with cargo build run your project […] →Read more