했다. 이번 단계 v5까지 만들었다.
ZPX AI Engine v5 다운로드
v5는 이제 LLM 후보 생성 + ZPX 구조검증 + reranking + 위험구간 표시까지 들어간다.
v1 = 수학 뼈대 v2 = 단일 답변 구조검증 MVP v3 = 여러 후보 답변 reranker v4 = 학습형 token→phase mapper v5 = 후보 생성기 + ZPX reranker + issue locator end-to-end pipeline
테스트도 통과했다.
All ZPX v5 tests passed. ZPX AI Engine v5 백서LLM 후보 생성기와 ZPX 구조검증 Reranker를 결합한 End-to-End AI 검증 파이프라인1. v5의 정체
v5는 물리법칙 프로젝트가 아니다.
이건 명확하게 인공지능 개발 프로젝트다.
[
\boxed{
\text{ZPX v5}
\text{LLM 후보 생성}
+
\text{ZPX 구조검증}
+
\text{답변 순위화}
+
\text{위험구간 표시}
}
]
기존 LLM은 답변을 생성한다.
[
A_1,A_2,\ldots,A_n
]
ZPX는 각 답변의 구조점수를 계산한다.
[
D_{\rm ZPX}(A_i)
]
그리고 가장 낮은 점수의 후보를 고른다.
[
\boxed{
A^*
\arg\min_iD_{\rm ZPX}(A_i)
}
]
즉 v5의 핵심은 이것이다.
[
\boxed{
\text{AI가 답을 하나만 내는 것이 아니라, 여러 후보를 만들고 ZPX가 구조적으로 고른다.}
}
]
2. v5 전체 파이프라인Prompt ↓ CandidateGenerator ↓ Candidate Answers ↓ ZPXValidator ↓ ZPXReranker ↓ IssueLocator ↓ Best Answer + Validation Report
수식으로 쓰면:
[
P=\text{prompt}
]
[
G(P)={A_1,A_2,\ldots,A_n}
]
[
D_i=D_{\rm ZPX}(A_i)
]
[
A^*=\arg\min_iD_i
]
[
W^=\text{High-risk windows of }A^
]
최종 출력:
[
(A^,D_{\rm ZPX}(A^),W^*)
]
3. v5에서 추가된 핵심 모듈3.1 CandidateGenerator
후보 답변을 생성한다.
현재는 외부 API 키 없이 돌아가도록 MockCandidateGenerator를 넣었다.
나중에 다음으로 교체 가능하다.
OpenAI API local llama.cpp Ollama vLLM 직접 만든 모델 사람이 작성한 후보 파일
핵심 인터페이스:
class CandidateGenerator: def generate(self, prompt: str, n: int) -> list[str]: ... 3.2 ZPXValidator
단일 답변을 검사한다.
출력값:
tokens phases phase_closure matrix_closure pairwise_conflict riemann_distance final_score risk_label 3.3 ZPXReranker
후보 여러 개를 ZPX 점수로 정렬한다.
[
A^*=\arg\min_iD_{\rm ZPX}(A_i)
]
3.4 IssueLocator
선택된 답변 안에서 구조적으로 불안정한 구간을 찾는다.
문장을 token window로 나눈다.
[
W_j=(w_j,w_{j+1},\ldots,w_{j+s})
]
각 구간 점수:
[
D_j=D_{\rm ZPX}(W_j)
]
높은 (D_j)를 가진 구간을 위험구간으로 표시한다.
4. v5 수학 구조
단어는 위상각으로 간다.
[
w_i\mapsto\theta_i\in S^1
]
단어의 대칭 임베딩은 다음이다.
[
\mathbf{z}(w_i)=
[
\cos\theta_i,\sin\theta_i,
\cos2\theta_i,\sin2\theta_i,
\cos3\theta_i,\sin3\theta_i,
\cos6\theta_i,\sin6\theta_i
]
]
여기서 (6\theta_i)는 (C_6) 대칭성이다.
단어 회전행렬:
[
R(\theta_i)=
\begin{bmatrix}
\cos\theta_i&-\sin\theta_i\
\sin\theta_i&\cos\theta_i
\end{bmatrix}
]
답변 전체 회전행렬:
[
M_A=\prod_iR(\theta_i)
]
위상합:
[
\Theta_A=\sum_i\theta_i
]
닫힘오차:
[
\epsilon_A=
\left|
(\Theta_A+\pi)\bmod2\pi-\pi
\right|
]
행렬 닫힘오차:
[
E_A=|M_A-I|_F
]
개념 충돌 점수:
[
C_A=
\frac{1}{|P|}
\sum_{i<j}
\frac{1-\cos(\theta_i-\theta_j)}{2}
]
최종 ZPX 점수:
[
\boxed{
D_{\rm ZPX}(A)=
\lambda_c\epsilon_A
+
\lambda_mE_A
+
\lambda_pC_A
+
\lambda_rD_R
}
]
5. 실행법
압축을 풀고:
cd zpx_ai_engine_v5/python python -m pip install numpy PYTHONPATH=. python tests/run_all.py
단일 파이프라인 실행:
PYTHONPATH=. python -m zpx_ai.cli pipeline "Explain why AI answers need validation" --markdown
학습형 mapper 생성:
PYTHONPATH=. python -m zpx_ai.cli train ../data/relation_pairs.jsonl --epochs 300 --out zpx_mapper.json
학습된 mapper로 pipeline 실행:
PYTHONPATH=. python -m zpx_ai.cli pipeline "premise evidence therefore conclusion" --mapper zpx_mapper.json --markdown
후보 파일을 직접 넣기:
PYTHONPATH=. python -m zpx_ai.cli pipeline "Choose best answer" --candidates-file ../data/demo_candidates.txt --markdown
데이터셋 평가:
PYTHONPATH=. python -m zpx_ai.cli evaluate ../data/eval_candidates.jsonl --train ../data/relation_pairs.jsonl --markdown
6. 개발자용 쉬운 설명
기존 LLM은 이렇게 한다.
질문 ↓ 답변 하나 생성
ZPX v5는 이렇게 한다.
질문 ↓ 답변 후보 여러 개 생성 ↓ 각 답변의 token phase path 계산 ↓ 닫힘오차/충돌점수 계산 ↓ 가장 구조적으로 안정적인 답변 선택 ↓ 불안정한 구간 표시
즉 ZPX는 “답변 생성기”가 아니라 답변 검증·선택기다.
개발자식으로 말하면:
ZPX = post-generation structural verifier + reranker
7. v5의 의미
v5까지 오면 형 이론 AI는 더 이상 말뿐인 구조가 아니다.
[
\boxed{
\text{Prompt}
\rightarrow
\text{Candidates}
\rightarrow
\text{ZPX Score}
\rightarrow
\text{Best Answer}
}
]
가 실제 코드로 돌아간다.
이번 v5가 입증한 것은 다음이다.
[
\boxed{
\text{후보 답변 생성 인터페이스를 만들 수 있다.}
}
]
[
\boxed{
\text{후보 답변을 ZPX 점수로 순위화할 수 있다.}
}
]
[
\boxed{
\text{가장 안정적인 답변 안의 위험구간도 찾을 수 있다.}
}
]
[
\boxed{
\text{외부 LLM API 없이도 mock generator로 end-to-end 테스트가 가능하다.}
}
]
8. 중요한 한계
정직하게 말하면 이건 아직 “진실 판별기”가 아니다.
[
\boxed{
\text{낮은 ZPX 점수}
\neq
\text{항상 사실}
}
]
낮은 ZPX 점수의 정확한 의미는 이것이다.
[
\boxed{
\text{현재 phase map 기준으로 구조적으로 더 안정적이다.}
}
]
따라서 최종 AI는 이렇게 가야 한다.
[
\boxed{
\text{LLM}
+
\text{ZPX 구조검증}
+
\text{검색/출처검증}
+
\text{규칙검증}
}
]
ZPX는 그중에서 구조검증을 맡는다.
9. v6 방향
다음 단계는 v6다.
[
\boxed{
\text{v6}
\text{검색/출처 검증 adapter 결합}
}
]
v6에서 해야 할 일은 다음이다.
1. LLM 후보 답변 생성 2. ZPX 구조점수로 후보 1차 정렬 3. 답변의 핵심 주장 추출 4. 검색/문서/DB에서 근거 확인 5. 구조점수 + 근거점수 결합 6. 최종 답변 선택
최종 점수는 이렇게 만들 수 있다.
[
D_{\rm final}
\alpha D_{\rm ZPX}
+
\beta D_{\rm factual}
+
\gamma D_{\rm policy}
]
여기서
[
D_{\rm ZPX}=\text{구조오차}
]
[
D_{\rm factual}=\text{출처/사실오차}
]
[
D_{\rm policy}=\text{규칙위반 위험}
]
이다.
10. 최종 결론
v5는 형 이론 AI 개발에서 중요한 단계다.
[
\boxed{
\text{v5}
\text{생성 후보}
+
\text{ZPX 구조검증}
+
\text{후보 선택}
+
\text{위험구간 표시}
}
]
이제 프로젝트의 정체는 명확하다.
[
\boxed{
\text{ZPX AI Engine}
\text{대칭성 기반 AI 구조검증 엔진}
}
]
그리고 다음 방향도 명확하다.
[
\boxed{
\text{v6}
\text{ZPX 구조검증}
+
\text{검색/출처검증}
}
]
즉 최종 목표는 이것이다.
[
\boxed{
\text{AI가 그럴듯한 말을 생성하는 데서 끝나지 않고, 구조와 근거를 함께 검증하게 만드는 것}
}
]
정리하면:
[
\boxed{
\text{v5 완성}
\text{LLM 후보 생성 + ZPX reranker + issue locator}
}
]
다음은 v6다.
[
\boxed{
\text{v6}
\text{검색/출처 검증 adapter 결합}
}
]
v6부터는 “구조가 맞는 답”뿐 아니라 근거가 있는 답까지 같이 보게 만들 수 있다.