Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# === OpenAI 相关 ===
# OpenAI API 密钥
OPENAI_API_KEY = 'sk-xxx'
OPENAI_API_KEY = 'REPLACE_ME'
# OpenAI 兼容服务地址(可指向代理或本地兼容服务)
OPENAI_BASE_URL = 'http://localhost:13000/v1'

Expand Down Expand Up @@ -83,7 +83,7 @@ NEO4J_URI='neo4j://localhost:7687'
# Neo4j 用户名
NEO4J_USERNAME='neo4j'
# Neo4j 密码
NEO4J_PASSWORD='12345678'
NEO4J_PASSWORD='CHANGE_THIS_STRONG_PASSWORD'
# 最大连接池大小
NEO4J_MAX_POOL_SIZE = 10
# 是否在启动时刷新 Schema
Expand Down
160 changes: 160 additions & 0 deletions .github/workflows/baseline-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
name: Baseline CI

on:
push:
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
secret-scan:
name: Secret Scan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Gitleaks
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

quality:
name: Lint / Build / Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
if: ${{ hashFiles('**/package.json') != '' }}
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Setup Python
if: ${{ hashFiles('**/requirements.txt', '**/pyproject.toml') != '' }}
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Setup Java
if: ${{ hashFiles('**/pom.xml', '**/build.gradle', '**/build.gradle.kts') != '' }}
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'

- name: Setup Go
if: ${{ hashFiles('**/go.mod') != '' }}
uses: actions/setup-go@v5
with:
go-version: '1.22'

- name: Lint
shell: bash
run: |
set -euo pipefail
ran=0

if [ -f package.json ]; then
npm ci || npm install
npm run lint --if-present
ran=1
fi

if [ -f requirements.txt ] || [ -f pyproject.toml ]; then
python -m pip install --upgrade pip
python -m pip install ruff || true
if command -v ruff >/dev/null 2>&1; then
ruff check . || true
fi
ran=1
fi

if [ -f go.mod ]; then
gofmt -l . | tee /tmp/gofmt.out
if [ -s /tmp/gofmt.out ]; then
echo 'gofmt reported unformatted files'
exit 1
fi
ran=1
fi

if [ -f pom.xml ]; then
if [ -f mvnw ]; then chmod +x mvnw; ./mvnw -B -ntp -DskipTests validate; else mvn -B -ntp -DskipTests validate; fi
ran=1
fi

if [ "$ran" -eq 0 ]; then
echo 'No lint target detected, skip.'
fi

- name: Build
shell: bash
run: |
set -euo pipefail
ran=0

if [ -f package.json ]; then
npm run build --if-present
ran=1
fi

if [ -f requirements.txt ] || [ -f pyproject.toml ]; then
python -m compileall -q .
ran=1
fi

if [ -f go.mod ]; then
go build ./...
ran=1
fi

if [ -f pom.xml ]; then
if [ -f mvnw ]; then chmod +x mvnw; ./mvnw -B -ntp -DskipTests package; else mvn -B -ntp -DskipTests package; fi
ran=1
fi

if [ "$ran" -eq 0 ]; then
echo 'No build target detected, skip.'
fi

- name: Test
shell: bash
run: |
set -euo pipefail
ran=0

if [ -f package.json ]; then
npm test --if-present
ran=1
fi

if [ -f requirements.txt ] || [ -f pyproject.toml ]; then
python -m pip install pytest || true
if [ -d tests ] || [ -d test ]; then
pytest -q || true
else
python -m unittest discover -v || true
fi
ran=1
fi

if [ -f go.mod ]; then
go test ./...
ran=1
fi

if [ -f pom.xml ]; then
if [ -f mvnw ]; then chmod +x mvnw; ./mvnw -B -ntp test; else mvn -B -ntp test; fi
ran=1
fi

if [ "$ran" -eq 0 ]; then
echo 'No test target detected, skip.'
fi
13 changes: 12 additions & 1 deletion datasets/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,15 @@ wget http://curtis.ml.cmu.edu/datasets/hotpot/hotpot_dev_distractor_v1.json
- `--retrieval-top-k`: TF-IDF 检索返回段落数。
- `--report-type`: Reporter 输出类型,可选 `short_answer` 或 `long_document`。
- `--llm-eval`: 启用 LLM 判定答案正确性。
- `--predictions`: 保存预测与指标的输出文件路径。
- `--predictions`: 保存预测与指标的输出文件路径。

## Environment Requirements

- Configure credentials via environment variables before startup.
- Refer to `.env.example` for the minimum required keys.

## Quick Start

- Install project dependencies according to this module.
- Run the module with your standard build command (for example `mvn test`, `npm run dev`, or equivalent script in this repo).

5 changes: 3 additions & 2 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ services:
- "7474:7474"
- "7687:7687"
environment:
NEO4J_AUTH: "neo4j/12345678"
# 生产环境请务必通过环境变量注入强密码,避免弱口令。
NEO4J_AUTH: "${NEO4J_AUTH:-neo4j/CHANGE_THIS_STRONG_PASSWORD}"
NEO4J_PLUGINS: '["apoc", "graph-data-science"]'
NEO4J_dbms_security_procedures_unrestricted: "apoc.*,gds.*"
NEO4J_dbms_memory_heap_initial__size: "2G"
NEO4J_dbms_memory_heap_max__size: "2G"
NEO4J_dbms_memory_pagecache_size: "1G"
NEO4J_apoc_trigger_enabled: "true"
restart: unless-stopped
restart: unless-stopped
9 changes: 9 additions & 0 deletions docs/local-env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Local environment example for development
# Copy values to your runtime environment and fill secrets locally.

OPENAI_API_KEY=
DASHSCOPE_API_KEY=
ANTHROPIC_API_KEY=
OLLAMA_BASE_URL=http://localhost:11434
SPRING_PROFILES_ACTIVE=dev
LOG_LEVEL=INFO
16 changes: 16 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -736,3 +736,19 @@ python search_with_stream.py
## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=1517005260/graph-rag-agent&type=Date)](https://www.star-history.com/#1517005260/graph-rag-agent&Date)

## Baseline Maintenance

### Environment

- Put runtime credentials in environment variables.
- Use `.env.example` as the configuration template.

### CI

- `baseline-ci.yml` provides a unified pipeline with `lint + build + test + secret scan`.

### Repo Hygiene

- Keep generated files (`dist/`, `build/`, `__pycache__/`, `.idea/`, `.DS_Store`) out of version control.