** 코드 변경 내용 참조,
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
rag_pdf_Book_mcp를 이용하여 다음 질문에 답해주세요. "Rotor의 공진을 정의해주시고, 공진이 발생하는 경우에 대해 설명해주세요."
검색된 내용을 바탕으로 종합적으로 답변드리겠습니다.
공진이란 Rotor의 회전 속도가 임계 속도(Critical Speed, Ω_cr)에 도달했을 때 나타나는 현상입니다.
📖 임계 속도(Critical Speed) : Rotor의 고유 진동수(Eigenfrequency) 가 Rotor의 회전 주파수(Rotor Frequency) 와 일치하는 회전 속도
즉, 공진은 외부 가진 주파수 = Rotor 고유 진동수가 되는 시점에서 발생하며, 이때 Rotor의 편향(deflection) 진폭이 최대가 됩니다.
물리적 의미:
불평형력(Unbalance Force) F_Un = m·ε·Ω²은 회전 속도의 제곱에 비례하여 증가합니다. Rotor 속도가 1차, 2차, 3차 임계 속도 를 통과할 때, Rotor 고유 진동수와 1X(동기 가진선)가 교차하는 지점에서 공진이 발생합니다.
⚠️ 공진 시 Rotor의 최대 편향이 극도로 커지면, 축의 응력이 극한 인장 강도(Ultimate Tensile Stress) 를 초과하여 Rotor 파단(Fracture) 이 발생할 수 있음
Rotor가 임계 속도 구간을 일정한 가속도(aφ)로 통과할 때도 공진이 발생하지만, 가속도에 따라 공진 특성이 달라집니다.
오일 필름 베어링에서 발생하는 Oil Whirl의 주파수가 Rotor의 1차 굽힘 임계 주파수에 도달하면 Oil Whip이 발생하며, 이는 매우 위험한 형태의 공진입니다.
| 구분 | Oil Whirl | Oil Whip |
|---|---|---|
| 발생 원인 | 베어링 간극 내 오일 선회 운동 | Whirl 주파수 = 1차 굽힘 임계 주파수 |
| 주파수 | 1X 미만 (아동기, < 1X) | Rotor 1차 고유 진동수에 고정 |
| 위험성 | 중간 | 매우 위험 — 진폭이 시간에 따라 무한 증가 |
| 불평형 연관성 | 없음 (불평형과 무관) | 없음 |
⚠️ Oil Whip은 베어링 손상(마모, 소착)을 일으키는 자기 가진 불안정성(Self-excitation Instability)
| 공진 발생 경우 | 가진 원인 | 특징 |
|---|---|---|
| 불평형 공진 | Unbalance Force (1X) | 임계 속도에서 진폭 최대 |
| Run-up 통과 공진 | 가속 통과 시 | 가속도 증가 → 진폭 감소 |
| Oil Whip 공진 | 오일 자기 가진 | 시간에 따라 진폭 무한 증가, 매우 위험 |
| 비대칭 Rotor 공진 | 후진 와류 교차 | 비대칭 구조에서 발생 |
공진 시 가장 중요한 설계 원칙은 1차 굽힘 임계 주파수를 가능한 높게 유지하여 Oil Whip 및 공진 위험 구간을 운전 속도 범위 밖으로 밀어내는 것입니다.