Query Reformulation
Multi Query
Decomposition
Step-Back Prompting
HyDE (Hypothetical Document Embedding)
# 벡터 저장소 로드
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
chroma_db = Chroma(
collection_name="db_korean_cosine_metadata",
embedding_function=embeddings,
persist_directory="./chroma_db",
)
# 기본 retriever 초기화
chroma_k_retriever = chroma_db.as_retriever(
search_kwargs={"k": 4}
)
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
retrieved_docs = chroma_k_retriever.invoke(query)
for doc in retrieved_docs:
print(f"{doc.page_content} [출처: {doc.metadata['source']}]")
print("="*200)
- 출력
[출처] 이 문서는 리비안에 대한 문서입니다.
----------------------------------
- **회사 유형:** 상장
- **거래소:** NASDAQ: RIVN
- **설립:** 2009년 6월, 플로리다 주 록ledge
- **설립자:** R. J. 스캐린지
- **본사:** 미국 캘리포니아 주 어바인
- **서비스 지역:** 북미
- **주요 인물:** R. J. 스캐린지 (CEO)
- **제품:** 전기 자동차, 배터리
- **생산량 (2023):** 57,232대
- **서비스:** 전기 자동차 충전, 자동차 보험
- **수익 (2023):** 44억 3천만 미국 달러
- **순이익 (2023):** -54억 미국 달러
- **총 자산 (2023):** 168억 미국 달러 [출처: data\리비안_KR.md]
...
[출처] https://arxiv.org/abs/2305.14283
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
# 쿼리 리포뮬레이션을 위한 프롬프트 템플릿 정의
reformulation_template = """다음 질문을 검색 성능을 향상시키기 위해 다시 작성해주세요:
[질문]
{question}
다음 방식으로 질문을 재작성하세요:
1. 동의어 추가
2. 더 구체적인 키워드 포함
3. 관련된 개념 확장
4. 구글 검색어 스타일 적용
[재작성된 질문]
"""
# 프롬프트 템플릿 생성
prompt = ChatPromptTemplate.from_template(reformulation_template)
# LLM 모델 초기화
llm = ChatOpenAI(model='gpt-4o-mini', temperature=0)
# 쿼리 리포뮬레이션 체인 생성
reformulation_chain = prompt | llm | StrOutputParser()
# 체인 실행
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
reformulated_query = reformulation_chain.invoke({"question": query}, config={"callbacks":[langfuse_handler]})
print(f"쿼리: {query}")
pprint(f"리포뮬레이션된 쿼리: \n{reformulated_query}")
- 출력
쿼리: 리비안의 사업 경쟁력은 어디서 나오나요?
'리포뮬레이션된 쿼리: \n리비안의 사업 경쟁력은 어떤 요소에서 비롯되며, 전기차 시장에서의 차별화된 전략과 혁신적인 기술은 무엇인가요?'
# 리포뮬레이션된 쿼리로 검색
retrieved_docs = chroma_k_retriever.invoke(reformulated_query)
for doc in retrieved_docs:
print(f"{doc.page_content} [출처: {doc.metadata['source']}]")
print("="*200)
- 출력
[출처] 이 문서는 리비안에 대한 문서입니다.
----------------------------------
- **회사 유형:** 상장
- **거래소:** NASDAQ: RIVN
- **설립:** 2009년 6월, 플로리다 주 록ledge
- **설립자:** R. J. 스캐린지
- **본사:** 미국 캘리포니아 주 어바인
- **서비스 지역:** 북미
- **주요 인물:** R. J. 스캐린지 (CEO)
- **제품:** 전기 자동차, 배터리
- **생산량 (2023):** 57,232대
- **서비스:** 전기 자동차 충전, 자동차 보험
- **수익 (2023):** 44억 3천만 미국 달러
- **순이익 (2023):** -54억 미국 달러
- **총 자산 (2023):** 168억 미국 달러 [출처: data\리비안_KR.md]
========================================================================================================================================================================================================
# Runnable 객체로 변환하여 검색기 생성 (LCEL)
reformulation_retriever = reformulation_chain | chroma_k_retriever
# 쿼리 리포뮬레이션 검색기 실행
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
retrieved_docs = reformulation_retriever.invoke({"question": query})
for doc in retrieved_docs:
print(f"{doc.page_content} [출처: {doc.metadata['source']}]")
print("="*200)
- 출력
[출처] 이 문서는 리비안에 대한 문서입니다.
----------------------------------
- **회사 유형:** 상장
- **거래소:** NASDAQ: RIVN
- **설립:** 2009년 6월, 플로리다 주 록ledge
- **설립자:** R. J. 스캐린지
- **본사:** 미국 캘리포니아 주 어바인
- **서비스 지역:** 북미
- **주요 인물:** R. J. 스캐린지 (CEO)
- **제품:** 전기 자동차, 배터리
- **생산량 (2023):** 57,232대
- **서비스:** 전기 자동차 충전, 자동차 보험
- **수익 (2023):** 44억 3천만 미국 달러
- **순이익 (2023):** -54억 미국 달러
- **총 자산 (2023):** 168억 미국 달러 [출처: data\리비안_KR.md]
========================================================================================================================================================================================================
# 멀티 쿼리 생성
from langchain.retrievers.multi_query import MultiQueryRetriever
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model='gpt-4o-mini',
temperature=0.7,
)
# 기본 retriever를 이용한 멀티 쿼리 생성
multi_query_retriever = MultiQueryRetriever.from_llm(
retriever=chroma_k_retriever, llm=llm
)
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
retrieved_docs = multi_query_retriever.invoke(query, config={"callbacks":[langfuse_handler]})
for doc in retrieved_docs:
print(f"{doc.page_content} [출처: {doc.metadata['source']}]")
print("="*200)
- 출력
[출처] 이 문서는 리비안에 대한 문서입니다.
----------------------------------
**재정**
Rivian의 재무 성과는 상당한 수익 성장과 상당한 순손실로 특징지어집니다.
| 연도 | 수익 (백만 USD) | 순이익 (백만 USD) | 총 자산 (백만 USD) |
| ---- | --------------- | ----------------- | ------------------ |
| 2020 | 0 | -1,018 | 4,602 |
| 2021 | 55 | -4,688 | 22,294 |
| 2022 | 1,658 | -6,752 | 17,876 |
| 2023 | 4,434 | -5,432 | 16,778 |
**최대 주주**
2023년 12월 현재 최대 주주는 Amazon, T. Rowe Price International, The Vanguard Group, BlackRock 및 Fidelity Investments였습니다.
**협력**
Rivian은 Alex Honnold, the Honnold Foundation, Casa Pueblo, Ewan McGregor, Charley Boorman, Yakima 및 MAXTRAX와 파트너십을 맺었습니다.
**소송** [출처: data\리비안_KR.md]
...
queries = multi_query_retriever.llm_chain.invoke({"question": query})
queries
- 출력
['리비안이 경쟁력을 갖추고 있는 주요 요소는 무엇인가요? ',
'리비안의 사업 성공 요인은 어떤 것들이 있나요? ',
'리비안이 시장에서 차별화되는 이유는 무엇인가요?']
from typing import List
from langchain.retrievers.multi_query import MultiQueryRetriever
from langchain_core.output_parsers import BaseOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
# 모델 초기화
llm = ChatOpenAI(model="gpt-4o-mini")
# 출력 파서: LLM 결과를 질문 리스트로 변환
class LineListOutputParser(BaseOutputParser[List[str]]):
"""Output parser for a list of lines."""
def parse(self, text: str) -> List[str]:
"""Split the text into lines and remove empty lines."""
return [line.strip() for line in text.strip().split("\n") if line.strip()]
# 쿼리 생성 프롬프트
QUERY_PROMPT = PromptTemplate(
input_variables=["question"],
template="""Generate three different versions of the given user question to retrieve relevant documents from a vector database. The goal is to reframe the question from various perspectives to overcome limitations of distance-based similarity search.
The generated questions should have the following characteristics:
1. Maintain the core intent of the original question but use different expressions or viewpoints.
2. Include synonyms or related concepts where possible.
3. Slightly broaden or narrow the scope of the question to potentially include diverse relevant information.
Write each question on a new line and include only the questions.
[Original question]
{question}
[Alternative questions]
""",
)
# 멀티쿼리 체인 구성
multiquery_chain = QUERY_PROMPT | llm | LineListOutputParser()
# 테스트 쿼리 실행
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
result = multiquery_chain.invoke({"question": query}, config={"callbacks":[langfuse_handler]})
print("생성된 대안 질문들:")
for i, q in enumerate(result, 1):
print(f"{i}. {q}")
- 출력
생성된 대안 질문들:
1. 리비안이 경쟁력을 갖추게 된 이유는 무엇인가요?
2. 리비안의 산업 내 강점은 어떤 요소들로 구성되어 있나요?
3. 리비안의 성공적인 사업 모델에는 어떤 중요한 요인들이 작용하고 있나요?
# 다중 쿼리 검색기 생성
multi_query_custom_retriever = MultiQueryRetriever(
retriever=chroma_k_retriever, # 기본 retriever
llm_chain=multiquery_chain, # 멀티쿼리 체인
parser_key="lines" # "lines": 출력 파서의 키
)
retrieved_docs = multi_query_custom_retriever.invoke(query)
for doc in retrieved_docs:
print(f"{doc.page_content} [출처: {doc.metadata['source']}]")
print("="*200)
- 출력
[출처] 이 문서는 리비안에 대한 문서입니다.
----------------------------------
**재정**
Rivian의 재무 성과는 상당한 수익 성장과 상당한 순손실로 특징지어집니다.
| 연도 | 수익 (백만 USD) | 순이익 (백만 USD) | 총 자산 (백만 USD) |
| ---- | --------------- | ----------------- | ------------------ |
| 2020 | 0 | -1,018 | 4,602 |
| 2021 | 55 | -4,688 | 22,294 |
| 2022 | 1,658 | -6,752 | 17,876 |
| 2023 | 4,434 | -5,432 | 16,778 |
**최대 주주**
2023년 12월 현재 최대 주주는 Amazon, T. Rowe Price International, The Vanguard Group, BlackRock 및 Fidelity Investments였습니다.
**협력**
Rivian은 Alex Honnold, the Honnold Foundation, Casa Pueblo, Ewan McGregor, Charley Boorman, Yakima 및 MAXTRAX와 파트너십을 맺었습니다.
**소송** [출처: data\리비안_KR.md]
...
[출처] https://arxiv.org/pdf/2205.10625
from langchain.prompts import PromptTemplate
QUERY_PROMPT = PromptTemplate(
input_variables=["question"],
template="""You are an AI language model assistant. Your task is to decompose the given input question into multiple sub-questions.
The goal is to break down the input into a set of sub-problems/sub-questions that can be answered independently.
Follow these guidelines to generate the sub-questions:
1. Cover various aspects related to the core topic of the original question.
2. Each sub-question should be specific, clear, and answerable independently.
3. Ensure that the sub-questions collectively address all important aspects of the original question.
4. Consider temporal aspects (past, present, future) where applicable.
5. Formulate the questions in a direct and concise manner.
[Input question]
{question}
[Sub-questions (5)]
""",
)
# 쿼리 생성 체인
decomposition_chain = QUERY_PROMPT | llm | LineListOutputParser()
# 테스트 쿼리 실행
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
result = decomposition_chain.invoke({"question": query}, config={"callbacks":[langfuse_handler]})
print("생성된 서브 질문들:")
for i, q in enumerate(result, 1):
print(f"{i}. {q}")
- 출력
생성된 서브 질문들:
1. 1. 리비안의 주요 제품과 서비스는 무엇인가요?
2. 2. 리비안의 기술 혁신은 어떤 방식으로 경쟁력을 강화하고 있나요?
3. 3. 리비안의 시장 전략은 어떻게 구성되어 있나요?
4. 4. 리비안의 경쟁사와 비교했을 때, 어떤 차별점이 있나요?
5. 5. 리비안의 미래 성장 가능성은 어떻게 평가할 수 있나요?
# 다중 쿼리 검색기 생성
multi_query_decompostion_retriever = MultiQueryRetriever(
retriever=chroma_k_retriever, # 기본 retriever
llm_chain=decomposition_chain, # 서브 질문 생성 체인
parser_key="lines" # "lines": 출력 파서의 키
)
retrieved_docs = multi_query_decompostion_retriever.invoke(query, config={"callbacks":[langfuse_handler]})
for doc in retrieved_docs:
print(f"{doc.page_content} [출처: {doc.metadata['source']}]")
print("="*200)
- 출력
[출처] 이 문서는 리비안에 대한 문서입니다.
----------------------------------
- **회사 유형:** 상장
- **거래소:** NASDAQ: RIVN
- **설립:** 2009년 6월, 플로리다 주 록ledge
- **설립자:** R. J. 스캐린지
- **본사:** 미국 캘리포니아 주 어바인
- **서비스 지역:** 북미
- **주요 인물:** R. J. 스캐린지 (CEO)
- **제품:** 전기 자동차, 배터리
- **생산량 (2023):** 57,232대
- **서비스:** 전기 자동차 충전, 자동차 보험
- **수익 (2023):** 44억 3천만 미국 달러
- **순이익 (2023):** -54억 미국 달러
- **총 자산 (2023):** 168억 미국 달러 [출처: data\리비안_KR.md]
========================================================================================================================================================================================================
[출처] 이 문서는 리비안에 대한 문서입니다.
----------------------------------
Rivian Automotive, Inc.는 2009년에 설립된 미국의 전기 자동차 제조업체, 자동차 기술 및 야외 레크리에이션 회사입니다.
**주요 정보:** [출처: data\리비안_KR.md]
...
[출처] https://arxiv.org/pdf/2310.06117
from langchain_core.prompts import ChatPromptTemplate, FewShotChatMessagePromptTemplate
# Few Shot 예제 - (구체적 질문, 포괄적 질문) 쌍
examples = [
{
"input": "애플의 M1 칩 개발이 기업 가치에 미친 영향은?",
"output": "기업의 핵심 기술 내재화가 경쟁우위에 미치는 영향은 무엇인가?",
},
{
"input": "아마존의 AWS가 수익성에 기여하는 방식은?",
"output": "기업의 새로운 사업 영역 확장이 수익 구조에 미치는 영향은 무엇인가?",
},
{
"input": "토요타의 하이브리드 기술 전략의 핵심은?",
"output": "자동차 산업에서 친환경 기술 혁신이 기업 성장에 미치는 영향은 무엇인가?",
}
]
# 프롬프트 템플릿 초기화
example_prompt = ChatPromptTemplate.from_messages([
("human", "{input}"),
("ai", "{output}"),
])
few_shot_prompt = FewShotChatMessagePromptTemplate(
example_prompt=example_prompt,
examples=examples,
)
# Step-Back 생성을 위한 프롬프트
step_back_prompt = ChatPromptTemplate.from_messages([
(
"system",
"""당신은 기업 분석 전문가입니다. 특정 기업에 대한 구체적인 질문을 해당 산업이나 비즈니스 전반의 일반적인 관점에서
재해석하는 것이 임무입니다. 산업 동향, 경쟁 구도, 기술 혁신, 사업 모델 등의 관점에서 더 포괄적인 질문으로
바꾸어 주세요. 다음은 예시입니다:"""
),
few_shot_prompt,
("user", "{question}"),
])
# Step-Back 체인 생성
step_back_chain = step_back_prompt | llm | StrOutputParser()
# Step-Back 질문 생성
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
step_back_question = step_back_chain.invoke({"question": query})
print(f"쿼리: {query}")
print(f"Step-Back 질문: {step_back_question}")
- 출력
쿼리: 리비안의 사업 경쟁력은 어디서 나오나요?
Step-Back 질문: 신생 전기차 기업이 시장에서 경쟁력을 확보하기 위한 주요 요소는 무엇인가?
# Step-Back 검색기 생성
step_back_retriever = step_back_chain | chroma_k_retriever
# Step-Back 검색 실행
retrieved_docs = step_back_retriever.invoke({"question": query})
for doc in retrieved_docs:
print(f"{doc.page_content} [출처: {doc.metadata['source']}]")
print("="*200)
- 출력
[출처] 이 문서는 테슬라에 대한 문서입니다.
----------------------------------
## 비즈니스 전략
Tesla의 전략은 배터리 비용을 줄이기 위해 고가, 소량 차량으로 시작한 다음 더 저렴하고 대량 차량을 제공하는 것입니다. Tesla는 자동차의 하드웨어를 지속적으로 업데이트하고 웹사이트와 회사 소유 매장을 통해 직접 차량을 판매합니다. Tesla는 수직적으로 통합되어 많은 구성 요소를 자체 개발합니다. Tesla는 일반적으로 지속 가능한 에너지 채택을 촉진하기 위해 경쟁 업체가 자사 기술을 라이선스하도록 허용합니다.
## 기술
### 배터리
Tesla는 CATL, LG Energy Solution 및 Panasonic에서 공급받은 원통형 및 각형 배터리 셀을 사용하고 있으며 자체 배터리를 생산할 수 있는 능력을 구축하고 있습니다. [출처: data\테슬라_KR.md]
...
from langchain_core.runnables import RunnableLambda, RunnablePassthrough
from langchain_core.prompts import ChatPromptTemplate
# 프롬프트 템플릿 초기화
response_prompt = ChatPromptTemplate.from_template(
"""당신은 전문가입니다. 다음 컨텍스트와 질문을 바탕으로 포괄적인 답변을 제공해주세요.
일반 컨텍스트:
{normal_context}
기본 개념 컨텍스트:
{step_back_context}
원래 질문: {question}
답변:"""
)
# 문서 포맷팅 함수
def format_docs(docs):
return "\n".join([doc.page_content for doc in docs])
# 답변 생성 체인
answer_chain = (
{
"normal_context": chroma_k_retriever,
"step_back_context": step_back_retriever,
"question": RunnablePassthrough(),
}
| response_prompt
| llm
| StrOutputParser()
)
# 답변 생성
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
answer = answer_chain.invoke(query, config={"callbacks":[langfuse_handler]})
print(f"쿼리: {query}")
print(f"답변: {answer}")
- 출력
쿼리: 리비안의 사업 경쟁력은 어디서 나오나요?
답변: 리비안의 사업 경쟁력은 여러 가지 요소에서 비롯됩니다. 다음은 그 주요 요인들입니다:
1. **혁신적인 제품 라인업**:
리비안은 전기 자동차(EV) 시장에서 픽업 트럭(R1T)과 SUV(R1S)라는 두 가지 주요 모델을 통해 차별화된 제품을 제공합니다. 이들 차량은 고성능, 긴 주행 거리 및 전방위적인 기능을 갖추고 있어 소비자들의 관심을 끌고 있습니다.
2. **전기차 전문성**:
리비안은 전기차 및 배터리 기술에 집중하고 있으며, 이는 지속 가능한 에너지 이동 수단의 필요성이 증가하는 가운데 경쟁력을 높일 수 있는 요소입니다. 전기차 시장에서의 기술적 우수성은 고객들에게 매력적입니다.
3. **강력한 재정 지원**:
2023년 기준으로 리비안은 Amazon, T. Rowe Price International, The Vanguard Group 등 주요 투자자들로부터 상당한 재정 지원을 받고 있습니다. 이러한 투자자들은 리비안의 성장 가능성을 높게 평가하고 있으며, 이는 회사의 안정성과 확장에 기여합니다.
4. **전략적 파트너십**:
리비안은 다양한 파트너십을 통해 브랜드 인지도와 시장 점유율을 높이고 있습니다. 유명 인사 및 비영리 단체와의 협력은 브랜드의 사회적 책임을 강화하고, 소비자들에게 긍정적인 이미지를 제공합니다.
5. **제조 및 엔지니어링 시설**:
리비안은 미국 내 여러 지역에 제조 및 엔지니어링 시설을 두고 있으며, 이는 효율적인 생산 및 공급망 관리를 가능하게 합니다. 특히 일리노이 주의 제조 공장은 차량 조립 및 부품 생산에 중점을 두고 있어, 생산 능력을 극대화할 수 있습니다.
6. **지속 가능한 에너지 비전**:
리비안은 지속 가능한 에너지 이동 수단을 지향하며, 이는 환경 문제에 대한 소비자들의 관심이 높아지는 추세와 맞물려 있습니다. 이와 같은 비전은 브랜드 충성도를 높이고, 사회적 책임을 다하는 기업으로서의 이미지를 구축하는 데 기여합니다.
7. **차별화된 사용자 경험**:
리비안은 차량의 소프트웨어 개발 및 엔지니어링에 주력하여, 고객들에게 편리하고 직관적인 사용자 경험을 제공합니다. 이는 차량의 사용성을 높이고 소비자 만족도를 증대시키는 데 중요한 역할을 합니다.
이러한 요소들은 리비안이 경쟁이 치열한 전기차 시장에서 차별화된 경쟁력을 유지하고, 성장할 수 있는 기반이 됩니다. 그러나 리비안은 여전히 상당한 순손실을 기록하고 있으며, 앞으로의 수익성 개선과 지속 가능한 성장이 필요합니다.
[출처] https://arxiv.org/abs/2212.10496
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
# HyDE를 위한 프롬프트 템플릿 생성
template = """주어진 질문에 대한 이상적인 문서 내용을 생성해주세요.
문서는 학술적이고 전문적인 톤으로 작성되어야 합니다.
질문: {question}
문서 내용:"""
hyde_prompt = ChatPromptTemplate.from_template(template)
# LLM 모델 초기화
hyde_llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
# 문서 생성 체인 생성
hyde_chain = hyde_prompt | hyde_llm | StrOutputParser()
# 문서 생성 실행
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
hypothetical_doc = hyde_chain.invoke({"question": query})
print(f"쿼리: {query}")
print(f"문서 내용: {hypothetical_doc}")
- 출력
쿼리: 리비안의 사업 경쟁력은 어디서 나오나요?
문서 내용: **리비안의 사업 경쟁력 분석**
**1. 서론**
리비안(Rivian)은 전기차(EV) 시장에서 주목받는 기업으로, 지속 가능한 이동 수단을 제공하는 데 중점을 두고 있다. 본 문서에서는 리비안의 사업 경쟁력이 어디에서 비롯되는지를 다각적으로 분석하고자 한다. 이를 위해 리비안의 기술 혁신, 브랜드 포지셔닝, 공급망 관리, 그리고 투자자 및 파트너십 전략을 살펴볼 것이다.
**2. 기술 혁신**
리비안의 가장 두드러진 경쟁력 중 하나는 첨단 기술에 대한 지속적인 투자와 혁신이다. 리비안은 전기차의 핵심 구성 요소인 배터리 기술, 전기 모터, 그리고 자율주행 시스템에 대한 연구 개발을 활발히 진행하고 있다. 특히, 리비안의 R1T와 R1S 모델은 고성능 배터리와 전기 모터를 통해 뛰어난 주행 거리와 성능을 제공하며, 이는 소비자들에게 매력적인 선택지를 제공한다. 또한, 리비안은 차량 소프트웨어의 지속적인 업데이트를 통해 사용자 경험을 향상시키고 있다.
**3. 브랜드 포지셔닝**
리비안은 '모험'과 '지속 가능성'이라는 두 가지 핵심 가치를 중심으로 브랜드를 구축하고 있다. 이는 소비자들에게 강력한 정서적 연결을 형성하며, 특히 아웃도어 활동을 선호하는 고객층을 겨냥하고 있다. 리비안의 차량은 전통적인 픽업 트럭과 SUV의 기능성을 갖추면서도 전기차의 친환경적 특성을 강조하여, 시장에서 독특한 위치를 차지하고 있다. 이러한 브랜드 포지셔닝은 소비자 충성도를 높이고, 경쟁사와의 차별화를 가능하게 한다.
**4. 공급망 관리**
리비안은 전기차 생산에 필요한 원자재와 부품의 공급망을 효율적으로 관리하고 있다. 특히, 리튬, 코발트, 니켈 등 배터리 제조에 필수적인 원자재의 안정적인 공급을 확보하기 위해 다양한 전략적 파트너십을 체결하고 있다. 이러한 공급망의 안정성은 생산 비용 절감과 함께 제품의 품질을 보장하는 데 기여하고 있다. 또한, 리비안은 지속 가능한 자원 조달을 통해 환경적 책임을 다하고 있으며, 이는 기업의 사회적 책임(CSR) 측면에서도 긍정적인 영향을 미친다.
**5. 투자자 및 파트너십 전략**
리비안은 대규모 자본을 유치하기 위해 다양한 투자자와의 협력을 강화하고 있다. 아마존과 포드와 같은 대기업으로부터의 투자 유치는 리비안의 기술 개발 및 생산 능력을 확장하는 데 중요한 역할을 하고 있다. 이러한 전략적 파트너십은 리비안이 시장에서의 경쟁력을 높이는 데 기여하며, 동시에 브랜드 신뢰성을 강화하는 데도 중요한 요소로 작용한다.
**6. 결론**
리비안의 사업 경쟁력은 기술 혁신, 브랜드 포지셔닝, 공급망 관리, 그리고 전략적 파트너십에 뿌리를 두고 있다. 이러한 요소들은 리비안이 전기차 시장에서 지속 가능한 성장을 이루는 데 필수적인 기반이 된다. 앞으로도 리비안은 지속적인 혁신과 시장 변화에 대한 적응력을 통해 경쟁력을 유지하고 강화해 나갈 것으로 기대된다.
# 가상 문서를 기반으로 실제 문서 검색
retrieved_docs = chroma_k_retriever.invoke(hypothetical_doc)
for doc in retrieved_docs:
print(f"{doc.page_content} [출처: {doc.metadata['source']}]")
print("="*200)
- 출력
[출처] 이 문서는 리비안에 대한 문서입니다.
----------------------------------
**시설**
- **Irvine, California:** 차량 엔지니어링 및 설계에 중점을 둔 본사.
- **Normal, Illinois:** 차량 부품을 생산하고 조립을 수행하는 제조 공장.
- **Plymouth, Michigan:** 차량 엔지니어링, 프로토타입 제작, 공급망 및 회계에 중점을 둡니다.
- **Palo Alto, California:** 소프트웨어 개발 및 엔지니어링에 중점을 둡니다.
- Carson, California 및 Woking, England에 추가 사무실이 있습니다.
- 애틀랜타 동쪽에 있는 새로운 50억 달러 규모의 배터리 및 조립 공장은 보류 중입니다.
**재정**
Rivian의 재무 성과는 상당한 수익 성장과 상당한 순손실로 특징지어집니다. [출처: data\리비안_KR.md]
...
# 최종 RAG를 위한 프롬프트 템플릿 생성
template = """다음 컨텍스트를 바탕으로 질문에 답변해주세요:
컨텍스트:
{context}
질문: {question}
답변:"""
rag_prompt = ChatPromptTemplate.from_template(template)
# RAG 체인 생성
rag_llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
rag_chain = rag_prompt | rag_llm | StrOutputParser()
# RAG 실행
query = "리비안의 사업 경쟁력은 어디서 나오나요?"
context = format_docs(retrieved_docs)
answer = rag_chain.invoke({"context": context, "question": query})
print(f"쿼리: {query}")
print(f"답변: {answer}")
- 출력
쿼리: 리비안의 사업 경쟁력은 어디서 나오나요?
답변: 리비안의 사업 경쟁력은 여러 요소에서 비롯됩니다. 첫째, 전기 자동차(EV) 시장의 성장과 함께 리비안은 혁신적인 전기 SUV 및 트럭을 개발하여 소비자들의 관심을 끌고 있습니다. 둘째, 리비안은 강력한 파트너십을 통해 브랜드 인지도를 높이고 있습니다. 예를 들어, 아마존과의 협력은 전기 배송 차량 개발에 기여하고 있으며, 이는 리비안의 기술력을 입증하는 데 도움이 됩니다.
셋째, 리비안은 차량 엔지니어링 및 설계에 중점을 둔 본사를 포함하여 여러 지역에 다양한 시설을 운영하고 있어, 효율적인 생산 및 공급망 관리가 가능합니다. 넷째, 리비안은 전기 자동차 충전 및 자동차 보험과 같은 부가 서비스도 제공하여 고객의 편의를 높이고 있습니다.
마지막으로, 리비안은 지속 가능한 야외 레크리에이션을 지향하는 브랜드 이미지와 함께, 환경 친화적인 전기차를 통해 소비자들에게 긍정적인 인식을 구축하고 있습니다. 이러한 요소들이 결합되어 리비안의 사업 경쟁력을 강화하고 있습니다.
# Step 1. 가상 문서 생성
query = "테슬라의 경영진을 분석해주세요."
hypothetical_doc = hyde_chain.invoke({"question": query})
# Step 2. 유사 문서 검색
retrieved_docs = docs = chroma_k_retriever.invoke(hypothetical_doc)
# Step 3. 최종 답변 생성
final_answer = rag_chain.invoke(
{
"context": format_docs(retrieved_docs),
"question": query
}
)
print(f"쿼리: {query}")
print(f"답변: {final_answer}")
- 출력
쿼리: 테슬라의 경영진을 분석해주세요.
답변: 테슬라의 경영진은 회사의 설립 초기부터 중요한 역할을 해왔습니다. 2003년 7월, Martin Eberhard와 Marc Tarpenning이 Tesla Motors, Inc.를 설립하였고, Eberhard는 CEO, Tarpenning은 CFO로 재직했습니다. 이후 Ian Wright가 합류하였고, 2004년 2월에는 Elon Musk가 750만 달러의 시리즈 A 자금 조달을 주도하며 회장 겸 최대 주주가 되었습니다. Musk는 이후 2008년 10월에 CEO로 취임하게 됩니다.
Musk는 테슬라의 비즈니스 전략과 기술 개발에 있어 핵심적인 역할을 하였으며, 프리미엄 스포츠카인 로드스터를 통해 시장에 진입한 후, 대량 생산 차량으로의 확장을 목표로 하는 전략을 추진했습니다. 또한, J. B. Straubel이 2004년 5월 CTO로 합류하여 기술 혁신과 배터리 개발에 기여하였습니다.
이 외에도, 테슬라는 경영진의 변화와 함께 여러 도전과 위기를 겪었습니다. 예를 들어, Eberhard는 2007년 CEO 자리에서 물러나야 했고, 이후 임시 CEO가 여러 차례 바뀌었습니다. Musk의 리더십 아래에서 테슬라는 지속 가능한 에너지와 전기차 시장에서의 입지를 강화해 나갔습니다.
결론적으로, 테슬라의 경영진은 초기 설립자들부터 시작하여 Musk와 Straubel 같은 인물들이 포함되어 있으며, 이들은 회사의 비전과 전략을 형성하는 데 중요한 역할을 해왔습니다.