feat: 初始化 OnceLove GraphRAG 项目基础架构
- 添加完整的项目结构,包括前端(Vue3 + Vite)、后端(Fastify)和基础设施配置 - 实现核心 GraphRAG 服务,集成 Neo4j 图数据库和 Qdrant 向量数据库 - 添加用户认证系统和管理员登录界面 - 提供 Docker 容器化部署方案和开发环境配置 - 包含项目文档、API 文档(Swagger)和测试脚本
This commit is contained in:
26
OnceLove/oncelove-graphrag/api/src/config/clients.js
Normal file
26
OnceLove/oncelove-graphrag/api/src/config/clients.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import neo4j from "neo4j-driver";
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
let neo4jDriver;
|
||||
let qdrantClient;
|
||||
|
||||
/**
|
||||
* 初始化并缓存数据库客户端,避免重复创建连接对象。
|
||||
*/
|
||||
export const createClients = (env) => {
|
||||
if (!neo4jDriver) {
|
||||
neo4jDriver = neo4j.driver(
|
||||
env.NEO4J_URI,
|
||||
neo4j.auth.basic(env.NEO4J_USER, env.NEO4J_PASSWORD)
|
||||
);
|
||||
}
|
||||
|
||||
if (!qdrantClient) {
|
||||
qdrantClient = new QdrantClient({
|
||||
url: env.QDRANT_URL,
|
||||
apiKey: env.QDRANT_API_KEY
|
||||
});
|
||||
}
|
||||
|
||||
return { neo4jDriver, qdrantClient };
|
||||
};
|
||||
30
OnceLove/oncelove-graphrag/api/src/config/env.js
Normal file
30
OnceLove/oncelove-graphrag/api/src/config/env.js
Normal file
@@ -0,0 +1,30 @@
|
||||
import dotenv from "dotenv";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
/**
|
||||
* 统一读取并导出运行时环境变量,供配置层与服务层复用。
|
||||
*/
|
||||
export const env = {
|
||||
NODE_ENV: process.env.NODE_ENV ?? "production", // 运行环境,默认生产
|
||||
PORT: Number(process.env.PORT ?? 3000), // 监听端口,默认 3000
|
||||
APPLICATION_URL: process.env.APPLICATION_URL ?? `http://localhost:${Number(process.env.PORT ?? 3000)}`,
|
||||
WEBUI_URL: process.env.WEBUI_URL ?? "http://localhost:8080",
|
||||
NEO4J_URI: process.env.NEO4J_URI, // Neo4j 连接 URI
|
||||
NEO4J_USER: process.env.NEO4J_USER, // Neo4j 用户名
|
||||
NEO4J_PASSWORD: process.env.NEO4J_PASSWORD, // Neo4j 密码
|
||||
QDRANT_URL: process.env.QDRANT_URL, // Qdrant 连接 URL
|
||||
QDRANT_API_KEY: process.env.QDRANT_API_KEY, // Qdrant API 密钥
|
||||
QDRANT_COLLECTION: process.env.QDRANT_COLLECTION ?? "oncelove_chunks", // Qdrant 集合名称,默认 oncelove_chunks
|
||||
EMBEDDING_DIM: Number(process.env.EMBEDDING_DIM ?? 1024), // 嵌入向量维度,默认 1024
|
||||
EMBEDDING_BASE_URL: process.env.EMBEDDING_BASE_URL ?? "",
|
||||
EMBEDDING_API_KEY: process.env.EMBEDDING_API_KEY ?? "",
|
||||
EMBEDDING_MODEL: process.env.EMBEDDING_MODEL ?? "",
|
||||
RERANK_BASE_URL: process.env.RERANK_BASE_URL ?? "",
|
||||
RERANK_API_KEY: process.env.RERANK_API_KEY ?? "",
|
||||
RERANK_MODEL: process.env.RERANK_MODEL ?? "",
|
||||
LLM_BASE_URL: process.env.LLM_BASE_URL ?? "",
|
||||
LLM_API_KEY: process.env.LLM_API_KEY ?? "",
|
||||
LLM_MODEL_NAME: process.env.LLM_MODEL_NAME ?? "",
|
||||
ADMIN_PASSWORD: process.env.ADMIN_PASSWORD ?? "oncelove123"
|
||||
};
|
||||
18
OnceLove/oncelove-graphrag/api/src/config/swagger.js
Normal file
18
OnceLove/oncelove-graphrag/api/src/config/swagger.js
Normal file
@@ -0,0 +1,18 @@
|
||||
import swaggerJsdoc from "swagger-jsdoc";
|
||||
|
||||
/**
|
||||
* 基于路由注释生成 OpenAPI 规范。
|
||||
*/
|
||||
export const createSwaggerSpec = (env) =>
|
||||
swaggerJsdoc({
|
||||
definition: {
|
||||
openapi: "3.0.3",
|
||||
info: {
|
||||
title: "OnceLove GraphRAG API",
|
||||
version: "0.1.0",
|
||||
description: "时序 GraphRAG 服务接口文档"
|
||||
},
|
||||
servers: [{ url: env.APPLICATION_URL }]
|
||||
},
|
||||
apis: ["src/routes/*.js"]
|
||||
});
|
||||
Reference in New Issue
Block a user