关于 NL Cache Framework
ThinkForge 是一个缓存自然语言查询并返回 SQL、API 调用和 URL 等结构化结果的框架。它通过嵌入向量相似度搜索、实体替换及管理面板来管理和测试缓存条目。
主要功能
- 01基于嵌入向量的相似度搜索
- 02支持 SQL、API、URL 和工作流模板
- 03实体提取与替换
- 04REST CRUD API 和管理面板
- 05CSV 导入与使用统计
适用场景
- 01为相似自然语言查询复用结构化结果
- 02管理并测试缓存模板
- 03通过 CSV 批量导入缓存条目
MCP 相关
项目被描述为 MCP 服务框架,但 README 未说明其向 MCP 客户端提供的工具或资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ThinkForge
一个用于缓存自然语言查询及其对应结构化输出(如 SQL、API 调用等)的框架,通过相似度搜索提升检索效果和性能。
概述
ThinkForge 旨在缓存自然语言(NL)查询,并将其映射到 SQL 查询、API 调用、URL 或其他模板等结构化输出。它使用嵌入向量进行相似度搜索,为给定输入查询检索最相关的缓存条目,从而提高自然语言处理应用的响应准确性和速度。
主要功能
- 语义相似度搜索:使用嵌入向量为自然语言查询查找最相关的缓存条目
- 多种模板类型:支持 SQL、API 调用、URL 和工作流模板
- 实体提取与替换:智能地从查询中提取实体并将其应用于模板
- 完整的 CRUD API:用于管理缓存条目的完整 REST API
- 交互式仪表板:用于管理和测试缓存条目的友好界面
- 推理过程记录:记录模板生成的推理过程
- 模板验证:确保模板符合质量标准
- 使用情况跟踪:记录使用统计信息以供分析
数据模型
核心数据模型围绕 Text2SQLCache 表展开,该表存储缓存条目及其用于相似度搜索的嵌入向量。以下是数据模型及相关类的详细视图。
classDiagram
class Text2SQLCache {
+int id
+string nl_query
+string template
+string template_type
+list vector_embedding
+bool is_template
+dict entity_replacements
+string reasoning_trace
+list tags
+string suggested_visualization
+string database_name
+string schema_name
+int catalog_id
+bool is_valid
+string invalidation_reason
+datetime created_at
+datetime updated_at
+np.ndarray embedding()
+dict to_dict()
+classmethod from_dict(dict)
}
class UsageLog {
+int id
+int cache_entry_id
+datetime timestamp
}
class TemplateType {
<<enumeration>>
SQL
URL
API
WORKFLOW
}
class Text2SQLController {
-Session session
-Text2SQLSimilarity similarity_util
+add_query()
+search_query()
+get_query_by_id()
+update_query()
+invalidate_query()
+delete_query()
+apply_entity_substitution()
}
class Text2SQLSimilarity {
-dict _model_cache
-SentenceTransformer model
+get_embedding()
+compute_string_similarity()
+compute_cosine_similarity()
+batch_compute_similarity()
}
class Text2SQLEntitySubstitution {
+extract_placeholders()
+extract_entities()
+apply_substitution()
+apply_sql_substitution()
+apply_url_substitution()
+apply_api_substitution()
}
Text2SQLCache --o TemplateType
UsageLog --> Text2SQLCache
Text2SQLController --> Text2SQLCache : manages
Text2SQLController --> Text2SQLSimilarity : uses
Text2SQLController --> Text2SQLEntitySubstitution : uses
note for Text2SQLCache "Stores natural language queries and their structured templates with embeddings for similarity search"
框架架构
该框架由用于管理缓存条目和执行相似度搜索的后端服务,以及用于用户交互的前端组成。以下是各组件及其交互过程的详细流程图。
flowchart TD
%% Main Flow
Client(Client Application) -->|NL Query Request| FastAPI[FastAPI Backend]
FastAPI -->|/v1/complete| NLQueryHandler[NL Query Handler]
%% Core ThinkForge Components
subgraph "ThinkForge"
NLQueryHandler -->|Check Cache| Controller[Text2SQLController]
Controller -->|Search Query| SimilarityUtil[Text2SQLSimilarity]
Controller -->|CRUD Operations| DBModels[Database Models]
Controller -->|Entity Handling| EntitySub[Text2SQLEntitySubstitution]
%% Similarity Component
SimilarityUtil -->|Vector Embeddings| SentenceTransformer[Sentence Transformer]
SimilarityUtil -->|String Similarity| SequenceMatcher[Sequence Matcher]
%% Entity Substitution Component
EntitySub -->|Extract Placeholders| Templates[(Templates)]
EntitySub -->|Extract Entities| NLQuery[(NL Queries)]
EntitySub -->|Apply Substitution| CompletedTemplate[(Completed Templates)]
end
%% Database
subgraph "Database"
DBModels -->|Store/Retrieve| CacheEntries[(Text2SQLCache)]
DBModels -->|Log Usage| UsageLog[(UsageLog)]
end
%% Response Paths
NLQueryHandler -->|Cache Hit| CacheHitResponse[Cache Hit Response]
NLQueryHandler -->|Cache Miss| CacheMissResponse[Cache Miss Response]
CacheHitResponse --> ResponseToClient[Response to Client]
CacheMissResponse --> ResponseToClient
%% Other API Endpoints
FastAPI -->|/v1/cache| CacheManagement[Cache Management]
CacheManagement -->|CRUD Operations| Controller
%% API Routes Legend
classDef apiEndpoint fill:#f9f,stroke:#333,stroke-width:2px;
class FastAPI,CacheManagement,NLQueryHandler apiEndpoint;
%% Component Legend
classDef framework fill:#bbf,stroke:#333,stroke-width:1px;
class Controller,SimilarityUtil,EntitySub,DBModels framework;
%% Database Legend
classDef db fill:#bfb,stroke:#333,stroke-width:1px;
class CacheEntries,UsageLog db;
时序流程
下方的时序图展示了用户查询在系统中的流程,从输入到检索或生成响应。
sequenceDiagram
participant U as User
participant F as Frontend
participant B as Backend API
participant C as Controller
participant S as Similarity Search
participant D as Database
participant L as LLM Service
U->>F: Enter NL Query
F->>B: Send Query Request
B->>C: Process Request
C->>S: Perform Similarity Search
S->>D: Retrieve Cached Entries
alt Match Found
D-->>S: Return Matching Entry
S-->>C: Return Template
C-->>B: Return Response
B-->>F: Display Result
F-->>U: Show Structured Output
else No Match
D-->>S: No Relevant Entry
S-->>C: No Match
C->>L: Generate New Template
L-->>C: Return Generated Template
C->>D: Cache New Entry with Embedding
D-->>C: Confirm Storage
C-->>B: Return Response
B-->>F: Display Result
F-->>U: Show Structured Output
end
技术实现
该框架使用以下技术实现:
-
后端:
- 使用 FastAPI 构建 REST API
- 使用 SQLAlchemy 作为数据库 ORM
- 使用 Sentence-Transformers 生成向量嵌入
- 使用 PostgreSQL 和 pgvector 进行向量存储和相似度搜索
- 集成大模型以生成模板(支持多个提供商)
-
前端:
- 使用 Next.js 和 React
- 使用 Tailwind CSS 进行样式设计
- 使用 ReactFlow 可视化工作流
- 使用 Radix UI 组件
安装
要在本地设置 ThinkForge,请按以下步骤操作:
-
克隆代码库:
git clone https://github.com/rnednur/thinkforge.git cd thinkforge -
设置后端:
- 进入
backend目录。 - 安装依赖:
pip install -r requirements.txt - 运行
dbscripts中的初始化脚本来设置数据库。 - 启动后端服务:
python app.py
- 进入
-
设置前端:
- 进入
frontend目录。 - 安装依赖:
npm install - 启动前端开发服务:
npm run dev - 也可以从根目录启动前端:
npm run dev
- 进入
-
Docker 设置:
- 也可以使用 Docker Compose 设置整个技术栈:
docker-compose up
- 也可以使用 Docker Compose 设置整个技术栈:
-
环境配置:
- 确保设置了数据库连接和模型配置所需的环境变量。所需变量请参阅
.env.example。
- 确保设置了数据库连接和模型配置所需的环境变量。所需变量请参阅
使用方法
- 访问应用:打开浏览器并访问
http://localhost:3000(或前端服务指定的端口),即可与界面交互。 - 缓存管理:在
/cache-entries下使用仪表板查看、创建、编辑或删除缓存条目。 - 查询测试:在
/complete-test测试自然语言查询,查看匹配或生成的结构化输出。 - 批量导入:使用 CSV 导入功能,从 CSV 文件批量加载缓存条目。
API 参考
ThinkForge API 提供以下端点:
POST /v1/complete:处理自然语言查询并返回匹配的结构化输出GET /v1/cache:列出所有缓存条目POST /v1/cache:创建新的缓存条目GET /v1/cache/{id}:获取指定的缓存条目PUT /v1/cache/{id}:更新缓存条目DELETE /v1/cache/{id}:删除缓存条目POST /v1/cache/import:从 CSV 导入缓存条目GET /v1/cache/stats:获取缓存条目的使用统计信息
未来增强功能
我们为 ThinkForge 框架规划了多项未来增强功能:
- 使用命名实体识别模型进行高级实体提取
- 模板版本控制和历史记录
- 用于性能监控的分析仪表板
- 用于改进模板的主动学习管道
- 优化模板以提升性能
- 高级安全功能
- 工作流编排能力
- API 网关集成
- 模板发现和推荐系统
- 数据库架构推断
- 针对特定领域应用的大模型微调
- 边缘部署支持
- 可解释性功能
- 用于连接各种数据库和服务的集成连接器
完整的计划增强功能列表,请参阅 future_enhancements.md 文件。
贡献
欢迎贡献!请按照以下步骤参与贡献:
- Fork 此仓库。
- 为你的功能或错误修复创建一个新分支。
- 进行更改,并使用描述性提交信息提交。
- 将更改推送到你的 fork。
- 向主仓库提交 pull request,并详细说明你的更改。
许可证
本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。
联系方式
如有疑问或需要支持,请通过 [维护者的电子邮件或 GitHub 个人资料] 联系项目维护者。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。