Files
OnceLove-New/OnceLove/oncelove-graphrag/api/src/server.js
KOSHM-Pig 1f087599c5 feat(graphrag): 新增多轮检索流式问答与用户管理界面
- 新增多轮 GraphRAG 检索功能,支持流式进度输出(SSE)
- 新增用户管理界面,可查看所有用户图谱统计并快速导航
- 新增多 Agent 任务拆解与执行服务,支持复杂任务协作处理
- 改进 embedding 和 rerank 服务的容错机制,支持备用模型和端点
- 更新前端样式遵循 Acmetone 设计规范,优化视觉一致性
- 新增流式分析接口,支持并行处理和专家评审选项
2026-03-24 12:04:28 +08:00

59 lines
1.8 KiB
JavaScript

import Fastify from "fastify";
import cors from "@fastify/cors";
import swagger from "@fastify/swagger";
import swaggerUi from "@fastify/swagger-ui";
import { env } from "./config/env.js";
import { createClients } from "./config/clients.js";
import { createSwaggerSpec } from "./config/swagger.js";
import { EmbeddingService, RerankService, GraphRagService, LLMService, MultiAgentService } from "./services/index.js";
import { createGraphRagController } from "./controllers/index.js";
import { registerRoutes } from "./routes/index.js";
/**
* 创建 Fastify 应用并完成依赖装配与路由注册。
*/
export const createServer = async () => {
const app = Fastify({ logger: true });
await app.register(cors, {
origin: [env.WEBUI_URL, "http://localhost:8080", "http://127.0.0.1:8080", "http://localhost:5174", "http://127.0.0.1:5174", "http://localhost:5173", "http://127.0.0.1:5173"],
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allowedHeaders: ["Content-Type", "Authorization"]
});
await app.register(swagger, {
mode: "static",
specification: {
document: createSwaggerSpec(env)
}
});
await app.register(swaggerUi, {
routePrefix: "/api-docs"
});
const { neo4jDriver, qdrantClient } = createClients(env);
const embeddingService = new EmbeddingService(env);
const rerankService = new RerankService(env);
const llmService = new LLMService(env);
const service = new GraphRagService({
driver: neo4jDriver,
qdrantClient,
embeddingService,
rerankService,
llmService,
env
});
const multiAgentService = new MultiAgentService({
llmService,
logger: app.log
});
const controller = createGraphRagController(service, multiAgentService);
await registerRoutes(app, controller, env);
app.addHook("onClose", async () => {
await neo4jDriver.close();
});
return { app, env };
};