feat: 初始化 OnceLove GraphRAG 项目基础架构
- 添加完整的项目结构,包括前端(Vue3 + Vite)、后端(Fastify)和基础设施配置 - 实现核心 GraphRAG 服务,集成 Neo4j 图数据库和 Qdrant 向量数据库 - 添加用户认证系统和管理员登录界面 - 提供 Docker 容器化部署方案和开发环境配置 - 包含项目文档、API 文档(Swagger)和测试脚本
This commit is contained in:
54
OnceLove/oncelove-graphrag/api/src/server.js
Normal file
54
OnceLove/oncelove-graphrag/api/src/server.js
Normal file
@@ -0,0 +1,54 @@
|
||||
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 } 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 controller = createGraphRagController(service);
|
||||
|
||||
await registerRoutes(app, controller, env);
|
||||
|
||||
app.addHook("onClose", async () => {
|
||||
await neo4jDriver.close();
|
||||
});
|
||||
|
||||
return { app, env };
|
||||
};
|
||||
Reference in New Issue
Block a user