LLMWare:构建企业级RAG应用的统一框架
LLMWare是一个开源项目,旨在为企业提供构建基于大语言模型(LLM)应用的统一框架,特别是针对检索增强生成(RAG)和多步骤代理工作流等场景。该框架的核心优势在于使用小型专业化模型,可以私有部署、安全集成企业知识源,并且能够针对特定业务流程进行高效的定制和调优。
主要特性
LLMWare框架主要包含两个核心组件:
-
RAG流水线 - 提供了连接知识源到生成式AI模型的全生命周期集成组件。
-
50多个小型专业化模型 - 这些模型针对企业流程自动化中的关键任务进行了微调,包括基于事实的问答、分类、摘要和信息抽取等。
通过整合这两个组件,并集成领先的开源模型和底层技术,LLMWare为快速构建基于知识的企业LLM应用提供了一套全面的工具。
值得一提的是,LLMWare的大多数示例可以在普通笔记本电脑上运行,无需GPU服务器,让用户可以立即上手体验。
核心概念
使用LLMWare进行开发主要基于以下几个核心概念:
-
模型目录(Model Catalog):提供统一的模型访问方式,支持150多个模型,包括50多个针对RAG优化的BLING、DRAGON和行业BERT模型。
-
库(Library):用于大规模摄入、组织和索引知识集合,支持解析、文本分块和嵌入。
-
查询(Query):支持对库进行文本、语义、混合、元数据和自定义过滤的多种查询方式。
-
带源提示(Prompt with Sources):提供了结合知识检索和LLM推理的最简单方式。
-
RAG优化模型:1-7B参数的模型,专为RAG工作流集成和本地运行而设计。
-
简单可扩展的数据库选项:从笔记本电脑到并行化集群,提供集成的数据存储解决方案。
-
带函数调用的代理和SLIM模型:支持更复杂的多步骤任务处理。
快速上手
LLMWare提供了多个快速入门示例,帮助用户迅速上手。例如,以下是一个简单的合同分析示例,使用本地运行的RAG优化LLM:
import os
import re
from llmware.prompts import Prompt, HumanInTheLoop
from llmware.setup import Setup
from llmware.configs import LLMWareConfig
def contract_analysis_on_laptop(model_name):
# 加载示例文件
sample_files_path = Setup().load_sample_files()
contracts_path = os.path.join(sample_files_path,"Agreements")
# 定义查询列表
query_list = {
"executive employment agreement": "What are the name of the two parties?",
"base salary": "What is the executive's base salary?",
"vacation": "How many vacation days will the executive receive?"
}
# 加载模型
prompter = Prompt().load_model(model_name, temperature=0.0, sample=False)
# 主循环:分析每份合同
for i, contract in enumerate(os.listdir(contracts_path)):
if contract != ".DS_Store":
print(f"\nAnalyzing contract: {i+1} {contract}")
print("LLM Responses:")
for key, value in query_list.items():
# 解析文档,提取相关段落,打包为模型可用的上下文
source = prompter.add_source_document(contracts_path, contract, query=key)
# 调用LLM
responses = prompter.prompt_with_source(value, prompt_name="default_with_context")
# 打印结果
for response in responses:
print(f"{key}: {re.sub('[\\n]',' ', response['llm_response']).strip()}")
# 清除源材料,准备下一次查询
prompter.clear_source_materials()
# 保存分析结果
prompter.save_state()
csv_output = HumanInTheLoop(prompter).export_current_interaction_to_csv()
print(f"CSV output saved at: {csv_output}")
if __name__ == "__main__":
model = "bling-phi-3-gguf" # 使用本地CPU模型
contract_analysis_on_laptop(model)
这个示例展示了如何使用LLMWare框架快速构建一个合同分析应用,包括文档解析、相关信息提取、LLM查询和结果保存等完整流程。
最新特性
LLMWare持续推出新的功能和改进,最近的亮点包括:
- 小型模型能力基准测试
- 支持使用Qwen2模型进行RAG、函数调用和聊天
- 新的Phi-3函数调用模型
- BizBot - 结合RAG和SQL的本地聊天机器人
- 讲座工具用例 - 对语音录音提问
- 用于金融研究的Web服务与代理调用
- 使用WhisperCPP进行语音转录
- 基于Phi-3 GGUF的本地流式聊天机器人UI
这些新特性进一步扩展了LLMWare的应用场景,为企业用户提供了更多灵活和强大的工具来构建定制化的LLM应用。
总的来说,LLMWare为企业提供了一个全面、灵活且易于使用的框架,用于构建基于小型专业化模型的RAG应用。通过整合多种先进技术和工具,LLMWare使得企业能够快速、安全地开发和部署符合其特定需求的AI应用,从而在保护数据隐私的同时提高生产力和创新能力。