Skip to main content
Glama

RAG · NTC CDMX 전문가 챗봇 (2004 / 2017 / 2023)

멕시코시티 건축 규정의 보충 기술 규범에 대한 RAG(Retrieval-Augmented Generation) 시스템으로, 하이브리드 검색(BM25 + 다국어 임베딩 + RRF)과 판본 및 조항별 인용을 제공합니다.

구조

RAG/
├── src/
│   ├── config.py        # rutas y mapeo PDF → (edición, norma)
│   ├── extract.py       # PDF → páginas de texto por norma (temp/extracted_text/)
│   ├── structure.py     # páginas → secciones X.Y.Z (data/corpus/*.json)
│   ├── index_build.py   # secciones → catálogo + BM25 + embeddings (data/index/)
│   ├── retrieve.py      # retriever híbrido (BM25 + embeddings + RRF + numeral)
│   ├── answer.py        # generador de respuestas con LLM (DeepSeek V4 Flash)
│   ├── calc.py          # cálculos validados (viento, sismo, combinaciones)
│   ├── evaluate.py      # evaluación recall@k con el dataset de 21k Q&A
│   └── finetune_gen.py  # genera dataset RAG-formateado para fine-tune del generador
├── app/app.py           # interfaz web (Streamlit)
└── scripts/run_all.py   # orquesta el pipeline completo

MCP 서버 (opencode, codex, Claude Desktop 등)

이 프로젝트는 세 가지 도구(tools)를 제공하는 MCP 서버로 노출됩니다:

도구

기능

answer_ntc(query)

RAG + LLM(DeepSeek V4 Flash)으로 응답하며 판본, 규범, 조항을 인용하고, 검증된 계산도 수행합니다

search_ntc(query, edition, norm, top_k)

관련 섹션을 원시 형태로 반환합니다

get_section(edition, norm, numeral)

특정 조항의 전체 텍스트를 반환합니다

자동 설치(opencode 및/또는 codex에 서버 등록):

.venv\Scripts\python.exe scripts\install_mcp.py            # opencode + codex
.venv\Scripts\python.exe scripts\install_mcp.py --opencode # solo opencode
.venv\Scripts\python.exe scripts\install_mcp.py --codex    # solo codex

opencode/codex를 다시 시작하면 RAG가 도구(answer_ntc 등)로 제공됩니다. 서버는 RAG/.env의 공급자 API 키, 해당 환경 변수 또는 ~/.config/ntc-cdmx/.env에서 키를 읽습니다.

단일 명령 설치 (GitHub + uv)

uvx --from git+https://github.com/Sobrio25/ntc-cdmx-mcp ntc-cdmx-install

이 명령은 MCP를 opencode, Codex, Command Code 및 Kilo Code에 설치하고 등록합니다. 클라이언트를 다시 시작하면 answer_ntc, search_ntc, get_section을 사용할 수 있습니다. 인덱스(BM25 + embeddings)는 패키지에 포함되어 있으며, 공급자의 API 키는 ~/.config/ntc-cdmx/.env에 설정합니다.

실행 파일만 설치하려면:

uv tool install git+https://github.com/Sobrio25/ntc-cdmx-mcp

서버를 수동으로 테스트하려면:

ntc-cdmx                                     # stdio (modo instalado)
.venv\Scripts\python.exe src\mcp_server.py   # stdio (modo desarrollo)

파이프라인

# 1) Extraer y estructurar e indexar
.venv/Scripts/python.exe scripts/run_all.py --steps extract structure index

# 2) Evaluar recall del retriever (muestra 400 preguntas del dataset de 21k)
.venv/Scripts/python.exe scripts/run_all.py --steps eval

# 3) Interfaz web
.venv/Scripts/python.exe -m streamlit run app/app.py

LLM 설정

응답은 DeepSeek V4 Flash를 사용합니다. src/answer.py(LLM_MODEL, LLM_BASE_URL)에서 공급자/API 키를 설정하세요.

키가 없으면 챗봇은 검색된 섹션만으로 응답하며(LLM 없음), 디버깅에 유용합니다.

검증된 계산 (src/calc.py)

질문이 계산을 요구하면(예: "Vz=35 m/s에 대한 풍압을 계산해 줘") 엔진이 이를 감지하고 LLM을 거치지 않고 규범 텍스트와 대조해 검증된 공식을 사용합니다. 포함된 계산기:

계산

공식

출처

동적 풍압

qz = 0.52·Vz² (m/s → Pa)

NTC-Viento 2023, §5.1.3

설계 풍압

pz = 0.47·Cp·VD²

NTC-Viento 2017/2004, §3.2

풍력 항력

F = 0.47·CD·VD²·A

NTC-Viento 2017/2004, §3.3

최소 지진 밑면 전단력

Vo,min = amin·Wo

NTC-Sismo 2023, §7.5

하중 조합

그룹 B: 1.3·CM+1.5·CV · 그룹 A: 1.5·CM+1.7·CV

NTC-Criterios 2023, §3.4.1

데이터가 누락되면 챗봇이 명시적으로 요청합니다.

생성기 파인튜닝 (src/finetune_gen.py)

채팅 형식의 데이터셋을 생성하며, 각 예제에는 검색된 컨텍스트가 포함됩니다(생성기가 규범을 암기하는 대신 컨텍스트를 기반으로 응답하도록 학습시키기 위함):

.venv/Scripts/python.exe src/finetune_gen.py --max 2000 --top_k 8 --require_all

검색된 컨텍스트로 뒷받침되지 않는 "gold" 응답이 있는 예제를 자동으로 필터링합니다(인용된 조항이 없으면 → 폐기).

평가

evaluate.py 모듈은 Documents\Fine_Tunning\NTC_CDMX\dataset.jsonl의 데이터셋을 사용합니다: "gold" 응답에 인용된 조항이 있는 각 질문에 대해 해당 조항이 검색된 섹션에 나타나는지 확인합니다.

참고 결과(인용 포함 164개 질문 샘플, top-6): recall@q ≈ 0.58. 데이터셋이 인용한 조항의 약 18 %는 해당 판본의 코퍼스에 존재하지 않습니다(데이터셋의 잘못된 인용 또는 추출 누락 가능성).

기술 참고 사항

  • 2004 및 2017 판본은 관보(gacetas)로 제공되며(PDF 하나에 여러 문서 포함), 각 규범의 경계는 src/config.py에 매핑되어 있습니다.

  • 분할은 번호가 매겨진 섹션 단위로 수행되며(절대 단락 단위 아님), 수식/표를 보존합니다.

  • 각 섹션에는 정확한 인용을 위해 {edición, norma, numeral, página} 메타데이터가 포함됩니다.

  • 2023 PDF는 디스크의 파일 이름에 손상된 문자가 있습니다. 추출기는 숫자 접두사로 이를 해결합니다.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence

  • Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.

  • MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sobrio25/ntc-cdmx-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server