PDF 파일 RAG - Claude : Part II (260414)

WonTerry·2026년 4월 14일

LLM

목록 보기
46/62

수정 내용 : 코사인 유사도 방식으로 변경

** 코드 변경 내용 참조,

  • self.index = faiss.IndexFlatIP(self.dimension)
    Cosine Similarity 방식으로 변경
  • 코사인 유사도를 위한 L2 정규화
    faiss.normalize_L2(embeddings)

github 링크

"embed_store.py"

import faiss
import pickle
import numpy as np
from sentence_transformers import SentenceTransformer


class VectorStore:
    def __init__(self, model_name: str = "all-MiniLM-L6-v2"):
        self.model = SentenceTransformer(model_name)
        self.dimension = 384

        # L2 거리 -> Inner Product
        self.index = faiss.IndexFlatIP(self.dimension)  # Cosine Similarity 방식으로 변경 (260414)
        self.metadata = []

    def add_documents(self, docs: list):
        texts = [doc["text"] for doc in docs]

        embeddings = self.model.encode(texts)
        embeddings = np.array(embeddings).astype("float32")

        # 코사인 유사도를 위한 L2 정규화
        faiss.normalize_L2(embeddings)

        self.index.add(embeddings)
        self.metadata.extend(docs)

    def save(self, index_path: str, meta_path: str):
        faiss.write_index(self.index, index_path)
        with open(meta_path, "wb") as f:
            pickle.dump(self.metadata, f)

    def load(self, index_path: str, meta_path: str):
        self.index = faiss.read_index(index_path)
        with open(meta_path, "rb") as f:
            self.metadata = pickle.load(f)

    def search(self, query: str, top_k: int = 3):
        query_embedding = self.model.encode([query])
        query_embedding = np.array(query_embedding).astype("float32")

        # query도 반드시 정규화
        faiss.normalize_L2(query_embedding)

        scores, indices = self.index.search(query_embedding, top_k)

        results = []
        for idx, score in zip(indices[0], scores[0]):
            if idx < len(self.metadata):
                result = self.metadata[idx].copy()
                result["score"] = float(score)  # cosine similarity score
                results.append(result)

        return results

Claude 출력 결과

rag_pdf_Book_mcp를 이용하여 다음 질문에 답해주세요. "Rotor의 공진을 정의해주시고, 공진이 발생하는 경우에 대해 설명해주세요."

검색된 내용을 바탕으로 종합적으로 답변드리겠습니다.


🔄 Rotor의 공진 (Resonance) 정의 및 발생 경우


1. 공진(Resonance)의 정의

공진이란 Rotor의 회전 속도가 임계 속도(Critical Speed, Ω_cr)에 도달했을 때 나타나는 현상입니다.

📖 임계 속도(Critical Speed) : Rotor의 고유 진동수(Eigenfrequency) 가 Rotor의 회전 주파수(Rotor Frequency) 와 일치하는 회전 속도

즉, 공진은 외부 가진 주파수 = Rotor 고유 진동수가 되는 시점에서 발생하며, 이때 Rotor의 편향(deflection) 진폭이 최대가 됩니다.

물리적 의미:

  • 임계 속도 이하 (Ω << Ω_cr): 관성력과 감쇠력이 작아, 주로 강성력(stiffness force)이 불평형력(unbalance force)과 균형을 이룸 → Rotor 편향이 불평형력 방향과 유사하게 증가
  • 임계 속도 시 (Ω = Ω_cr): 불평형력, 관성력, 감쇠력, 강성력 등이 상호 작용하여 Rotor 편향이 최대(maximum deflection) 에 도달 → 위상각 φ = 90°
  • 임계 속도 초과 이후: 자기 중심화(self-centering) 효과로 Rotor 진폭이 감소

2. 공진이 발생하는 경우

✅ Case 1. 불평형(Unbalance)에 의한 공진 — 가장 일반적

불평형력(Unbalance Force) F_Un = m·ε·Ω²은 회전 속도의 제곱에 비례하여 증가합니다. Rotor 속도가 1차, 2차, 3차 임계 속도 를 통과할 때, Rotor 고유 진동수와 1X(동기 가진선)가 교차하는 지점에서 공진이 발생합니다.

  • Campbell Diagram에서 전진 와류(Forward Whirl)의 고유 진동수동기 가진선(1X)의 교점이 바로 임계 속도
  • 공진 진폭은 감쇠비(ζ)에 반비례: 감쇠가 클수록 공진 진폭은 감소

⚠️ 공진 시 Rotor의 최대 편향이 극도로 커지면, 축의 응력이 극한 인장 강도(Ultimate Tensile Stress) 를 초과하여 Rotor 파단(Fracture) 이 발생할 수 있음

✅ Case 2. Run-up(가속 통과) 조건에서의 공진

Rotor가 임계 속도 구간을 일정한 가속도(aφ)로 통과할 때도 공진이 발생하지만, 가속도에 따라 공진 특성이 달라집니다.

  • 가속도가 높을수록: 임계 속도는 상승하나, 공진 진폭은 감소
  • 따라서 발전소 등의 터보기계에서는 공진 손상 방지를 위해 높은 가속도로 빠르게 임계 속도 구간을 통과하는 방법을 사용

✅ Case 3. Oil Whip에 의한 공진 (비선형 회전체역학)

오일 필름 베어링에서 발생하는 Oil Whirl의 주파수가 Rotor의 1차 굽힘 임계 주파수에 도달하면 Oil Whip이 발생하며, 이는 매우 위험한 형태의 공진입니다.

구분Oil WhirlOil Whip
발생 원인베어링 간극 내 오일 선회 운동Whirl 주파수 = 1차 굽힘 임계 주파수
주파수1X 미만 (아동기, < 1X)Rotor 1차 고유 진동수에 고정
위험성중간매우 위험 — 진폭이 시간에 따라 무한 증가
불평형 연관성없음 (불평형과 무관)없음

⚠️ Oil Whip은 베어링 손상(마모, 소착)을 일으키는 자기 가진 불안정성(Self-excitation Instability)

✅ Case 4. 비대칭 Rotor 또는 진동하는 회전 속도에서 후진 와류(Backward Whirl)에 의한 공진

  • 일반적으로 불평형력은 전진 와류(Forward Whirl) 만 가진
  • 그러나 비대칭 Rotor 또는 교번하는 방향의 가진력 존재 시, 후진 와류(Backward Whirl) 도 공진을 일으킬 수 있음

🔑 정리

공진 발생 경우가진 원인특징
불평형 공진Unbalance Force (1X)임계 속도에서 진폭 최대
Run-up 통과 공진가속 통과 시가속도 증가 → 진폭 감소
Oil Whip 공진오일 자기 가진시간에 따라 진폭 무한 증가, 매우 위험
비대칭 Rotor 공진후진 와류 교차비대칭 구조에서 발생

공진 시 가장 중요한 설계 원칙은 1차 굽힘 임계 주파수를 가능한 높게 유지하여 Oil Whip 및 공진 위험 구간을 운전 속도 범위 밖으로 밀어내는 것입니다.

profile
Hello, I'm Terry! 👋 Enjoy every moment of your life! 🌱 My current interests are Signal processing, Machine learning, Python, Database, LLM & RAG, MCP & ADK, Multi-Agents, Physical AI, ROS2...

0개의 댓글