LangGraph:基于图结构的大模型智能体开发框架
LangGraph 是LangChainAI开发的一个工具库,用于创建代理和多代理智能体工作流。它提供了以下核心优势:周期、可控性和持久性,对于Agent智能体开发者来说无疑减少了许多工作量。以下篇幅仅从本人角度阐述LangGraph在开发过程中的亮点以及使用方法。
基本介绍LangGraph的StateGraph是一种状态机,包含了节点和边,节点一般是定义好的函数,边用于连接不同的节点,用于表示图的执行顺序。简单来说,使用LangGraph构建工作流的步骤如下:
初始化模型和工具
定义图的状态信息
定义图节点
定义图的入口节点和边关系
编译图
执行图
123456789101112131415161718192021222324252627282930313233from typing import Annotatedfrom typing_extensions import TypedDictfrom langgraph.graph import StateGraph, START, ENDfrom langgraph.graph.message import add_mess ...
轻量高效的知识图谱RAG系统:LightRAG
LightRAG是港大Data Lab提出一种基于知识图谱结构的RAG方案,相比GraphRAG具有更快更经济的特点。
架构
1 索引阶段:对文档进行切分处理,提取其中的实体和边分别进行向量化处理,存放在向量知识库2 检索阶段:对用于输入分别提取局部和全局关键词,分别用于检索向量知识库中的实体和边关系,同时结合相关的chunk进行总结
下载方式1 源码安装12cd LightRAGpip install -e .
2 pypi源安装1pip install lightrag-hku
需要额外手动安装多个包,不太方便。建议从源码安装,可以直接下载所有依赖
模型支持1 支持兼容openai规范的接口1234567891011121314151617181920async def llm_model_func( prompt, system_prompt=None, history_messages=[], keyword_extraction=False, **kwargs) -> str: return await openai_complete_if_cac ...
PostgreSQL 数据库向量化的核心:pgvector
pgvector介绍pgvector是一款开源的向量搜索引擎,除了具备所有Postgres数据库的特性外,最主要的特点是能在Postgres数据库存储和检索向量数据,支持向量的精确检索和模糊检索。向量格式除了传统embedding模型的单精度浮点数外,还支持半精度浮点数,二元向量或者稀疏向量。
安装Docker1docker pull pgvector/pgvector:pg17
手动编译12345cd /tmpgit clone --branch v0。8。0 https://github。com/pgvector/pgvector。gitcd pgvectormakemake install # may need sudo
手动编译过程可能会出错,可以参考官方给出的解决方法
激活123# 每次新建一个数据库都需要执行如下操作激活插件CREATE EXTENSION vector;
使用方法123456# 数据库已经支持vector类型的数据了CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)) ...
PGML:向量数据库内一体化的RAG框架
架构总览
特性:● 支持数据库中进行的ai和ml分析● 支持gpu加速● 集成多种开源llm和rag框架● 支持传统的机器学习模型
使用方法云端试用官方提供了云服务试用,根据要求注册账号即可: 注册地址
本地部署官方提供了docker镜像,执行如下命令即可安装
1234567docker run \ -it \ -v postgresml_data:/var/lib/postgresql \ -p 5433:5432 \ -p 8000:8000 \ ghcr.io/postgresml/postgresml:2.7.12 \ sudo -u postgresml psql -d postgresml
进入容器后,可选发现预先定义好一些表,同时已经安装了pgvector和pgml插件
一体化RAG框架
PGML的一体化RAG是针对传统RAG进行改进的解决方案。一体化的RAG不再依赖分散的模块来处理嵌入、检索、重排和文本生成,而是将它们组合在一项服务下。PGML提供了如下RAG基本步骤:
文档切分模块:用于把完整文档按照不同的切分策略进行切分
向 ...
一文梳理RAG(检索增强生成)的现状与挑战
一 RAG简介大模型相较于过去的语言模型具备更加强大的能力,但在实际应用中,例如在准确性、知识更新速度和答案透明度方面,仍存在不少问题,比如典型的幻觉现象。因此,检索增强生成 (Retrieval-Augmented Generation, RAG) 被当作于大模型应用开发的一种新范式。RAG是指在利用大语言模型回答问题之前,先从外部知识库检索相关信息,然后再让模型根据这些信息进行总结归纳,这样便能确保模型不会胡说八道,并且回答的内容是有所依据的。尽管这几年大模型发展迅速,但至少还存在以下问题:
● 准确性: LLM是自回归模型,基于前一个词来推测下一个词,这种概率不可避免会产生错误的信息。
● 知识更新速度: LLM训练数据总是有限的,这可能导致模型的知识更新滞后,因此产生过时回答。
● 答案透明度: LLM 生成的内容往往缺乏明确的信息来源,影响内容的可信度。
● 领域专业知识能力欠缺: LLM在预训练阶段是由各种领域的数据训练得到,这些数据一般分布都比较均匀,没有哪个领域的数据占据了绝对优势,因此在处理特定领域的专业知识时,效果往往不会太好。
二 RAG与微调效果对比
性能对 ...
RAG文档解析利器:Deepdoc
项目结构Deepdoc是RAG框架RAGFLOW中使用的文档解析工具。
123456789101112131415161718192021222324|--deepdoc |--parser |--resume |--entities |--step_one.py |--step_two.py |--docx_parser.py |--pdf_parser.py |--excel_parser.py |--html_parser.py |--json_parser.py |--markdown_parser.py |--ppt_parser.py |--vision |--layout_recoginzer.py |--ocr.py |--ocr.res |--operators.py |--postprocess.py |--recoginzer.py |--seeit.py |--t_recoginzer.p ...
Magic-PDF:端到端PDF文档解析神器 构建高质量RAG必备!
项目结构
流程解析预处理的作用是判断文档内容是否需要进行OCR识别,如果是普通可编辑的PDF文档,则使用PyMuPDF库提取元信息。
模型层除了常规的OCR、版面结构分析外,还有公式检测模型,可提取公式内容,用于后续把公式转化为Latex格式。但是目前暂无表格内容识别,官方预计1个月之内会放出。
管线层主要是把上面模型的结果进行加工处理。比如把公式转化为Latex格式、图表保存起来成为图片、把文本框进行排序和合并以及过滤掉无用的信息(页眉、页脚等)。
输出层其实就是结果文件夹中的内容。结果文件夹中有layout.pdf、span.pdf、xx_middle.json、xx_model.json、xx_content_list.json、xx.md、images文件夹。
layout.pdf 可以看到 版面结构的识别结果
span.pdf 可以看到具体每个文本框的内容
xx_middle.json 是用OCR或者PDF库解析出的文档元信息,包含文本块类型、内容和坐标。
xx_model.json 是版面分析结果的内容,包含文本块的类型、坐标和置信度。
xx_content_ ...
开源Text2SQL框架汇总
Chat2DB
项目地址:https://github.com/chat2db/Chat2DB
简介:Chat2DB是一个通用的SQL客户端和数据分析工具,能够辅助生成SQL,同时支持对话式的数据分析功能,提供了网页、客户端2种使用方式,它支持几乎所有流行的数据库,并且chat2DB还开源了7B的SQL模型。
特性:SQL生成、智能报告、数据探索。
架构:
SQL Chat
项目地址:https://github.com/sqlchat/sqlchat
简介:SQL Chat 是一个基于聊天的 SQL 客户端,使用自然语言与数据库以沟通的方式,实现对数据库的查询、修改、新增、删除等操作。
特性:除了自然语言交互外,还能对数据库进行增删改查。
架构:
Vanna
项目地址: https://github.com/vanna-ai/vanna
简介: Vanna是麻省理工学院授权的开源Python RAG(检索增强生成)框架,用于SQL生成和相关功能。
特性:Vanna只需两个简单的步骤——在数据上训练RAG“模型”,然后提出问题,这些问题将返回SQL查询,这些查询 ...
DB-GPT:LLM应用的集大成者
整体架构
架构解读可以看到,DB-GPT把架构抽象为7层,自下而上分别为:
运行环境:支持本地/云端&单机/分布式等部署方式。顺便一提,RAY是蚂蚁深度参与的一个开源项目,所以对RAY功能的支持应该非常完善。
训练层:由子项目DB-GPT-Hub提供。以LLM为基,包含多种数据集和微调方法的微调框架。
协议层:AWEL(智能体编排语言),专为大模型应用开发设计的智能体工作流表达语言。
模块层:SMMF(多模型管理)、RAG(检索增强生成)、Agent(智能体)。
服务层:包含LLM、API、RAG在内的多个服务部署。
应用层:数据库对话、商业数据分析、知识库对话、表格对话等。
可视化层:输出样式,包含图表、工作流、文本的格式化输出等。
功能特性一、以RAG为核心的知识库问答
支持多文件格式、支持向量检索和稀疏检索,对海量结构化,非结构化数据做统一向量存储与检索。
二、以Chatdata为核心的数据问答
支持自然语言与Excel、数据库、数仓等多种数据源交互,分析报告,生成可视化图表。
三、统一的多模型管理服务
包括开源、API代理等几十种国内外大语言模型。
...
基于Sentence Transformer微调向量模型
Sentence Transformer库升级到了V3,其中对模型训练部分做了优化,使得模型训练和微调更加简单了,跟着官方教程走了一遍,顺利完成向量模型的微调,以下是对官方教程的精炼和总结。
一 所需组件使用Sentence Transformer库进行向量模型的微调需要如下的组件:
数据数据: 用于训练和评估的数据。
损失函数 : 一个量化模型性能并指导优化过程的函数。
训练参数 (可选): 影响训练性能和跟踪/调试的参数。
评估器 (可选): 一个在训练前、中或后评估模型的工具。
训练器 : 将模型、数据集、损失函数和其他组件整合在一起进行训练。
二 数据集大部分微调用到的数据都是本地的数据集,因此这里只提供本地数据的处理方法。如用其他在线数据可参考相对应的API。
1 数据类型常见的数据类型为json、csv、parquet,可以使用load_dataset进行加载:
12345from datasets import load_datasetcsv_dataset = load_dataset("csv", data_files="m ...