엔지니어링 효율성 향상 - RAG(향상된 검색 생성)
GPT-3와 같은 대규모 언어 모델의 출현으로 자연어 처리(NLP) 분야에서 큰 발전이 이루어졌습니다. 이러한 언어 모델은 인간과 유사한 텍스트를 생성하는 능력을 갖추고 있어 챗봇, 번역 등 다양한 시나리오에서 널리 사용되어 왔습니다
그러나 전문화되고 사용자 정의된 응용 시나리오의 경우 범용 대형 언어 모델이 있을 수 있습니다. 전문적인 지식이 부족합니다. 특수한 말뭉치로 이러한 모델을 미세 조정하는 데는 비용과 시간이 많이 소요되는 경우가 많습니다. "RAG(Retrieval Enhanced Generation)"는 전문 애플리케이션을 위한 새로운 기술 솔루션을 제공합니다.
아래에서는 주로 RAG의 작동 방식을 소개하고, 실제 사례를 통해 제품 매뉴얼을 전문적인 코퍼스로 활용하고, GPT-3.5 Turbo를 질의응답 모델로 활용해 효율성을 검증합니다.
사례: 특정 제품과 관련된 질문에 답할 수 있는 챗봇을 개발합니다. 이 비즈니스에는 고유한 사용자 매뉴얼이 있습니다.
RAG 소개
RAG는 도메인별 질문과 답변에 대한 효과적인 솔루션을 제공합니다. 주로 업계 지식을 저장 및 검색을 위한 벡터로 변환하고, 검색 결과를 사용자 질문과 결합하여 프롬프트 정보를 형성하고, 마지막으로 대규모 모델을 사용하여 적절한 답변을 생성합니다. 검색 메커니즘과 언어 모델을 결합하여 모델의 응답성이 크게 향상됩니다.
챗봇 프로그램을 만드는 단계는 다음과 같습니다.
- PDF(사용자 설명서 PDF 파일)를 읽고 1000개 토큰에 대한 Chunk_size를 사용하여 토큰화합니다. .
- 벡터 생성(OpenAI EmbeddingsAPI를 사용하여 벡터 생성 가능)
- 로컬 벡터 라이브러리에 벡터를 저장합니다. ChromaDB를 벡터 데이터베이스로 사용하겠습니다(벡터 데이터베이스는 Pinecone 또는 다른 제품으로 대체할 수도 있음).
- 사용자는 질문/질문으로 팁을 게시합니다.
- 사용자의 질문을 기반으로 벡터 데이터베이스에서 지식 컨텍스트 데이터를 검색합니다. 이 지식 맥락 데이터는 종종 문맥 강화라고 불리는 단서 단어를 강화하기 위해 후속 단계에서 단서 단어와 함께 사용될 것입니다.
- 사용자 질문이 포함된 프롬프트 단어는 이 맥락을 기반으로 향상된 문맥 지식
- LLM 답변과 함께 LLM으로 전달됩니다.
실습 개발
(1) Python 가상 환경 설정 버전 또는 종속성 충돌을 피하기 위해 Python을 샌드박스하는 가상 환경을 설정합니다. 다음 명령을 실행하여 새로운 Python 가상 환경을 생성합니다.
需要重写的内容是:pip安装virtualenv,python3 -m venv ./venv,source venv/bin/activate
다시 작성해야 하는 콘텐츠는 다음과 같습니다. (2) OpenAI 키 생성
GPT를 사용하려면 액세스하려면 OpenAI 키가 필요합니다.
다시 작성해야 하는 콘텐츠는 다음과 같습니다. (3) 종속 라이브러리 설치
설치 프로그램에 필요한 다양한 종속성. 다음 라이브러리가 포함되어 있습니다.
- lanchain: LLM 애플리케이션 개발을 위한 프레임워크입니다.
- chromaDB: 영구 벡터 임베딩을 위한 VectorDB입니다.
- 구조화되지 않음: Word/PDF 문서를 전처리하는 데 사용됩니다.
- tiktoken: Tokenizer 프레임워크
- pypdf: PDF 문서를 읽고 처리하기 위한 프레임워크입니다.
- openai: OpenAI 프레임워크에 액세스하세요.
pip install langchainpip install unstructuredpip install pypdfpip install tiktokenpip install chromadbpip install openai
OpenAI 키를 저장할 환경 변수를 만듭니다.
export OPENAI_API_KEY=<openai-key></openai-key>
(4) 사용자 설명서 PDF 파일을 벡터로 변환하고 ChromaDB에 저장합니다.
PDF를 읽고, 문서를 토큰화하고, 문서를 분할하기 위해
import osimport openaiimport tiktokenimport chromadbfrom langchain.document_loaders import OnlinePDFLoader, UnstructuredPDFLoader, PyPDFLoaderfrom langchain.text_splitter import TokenTextSplitterfrom langchain.memory import ConversationBufferMemoryfrom langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.llms import OpenAIfrom langchain.chains import ConversationalRetrievalChain
를 사용하는 데 필요한 모든 종속 라이브러리와 기능을 가져옵니다. .
loader = PyPDFLoader("Clarett.pdf")pdfData = loader.load()text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)splitData = text_splitter.split_documents(pdfData)
크로마 컬렉션과 크로마 데이터를 저장할 로컬 디렉터리를 생성하세요. 그런 다음 벡터(임베딩)를 생성하고 이를 ChromaDB에 저장합니다.
collection_name = "clarett_collection"local_directory = "clarett_vect_embedding"persist_directory = os.path.join(os.getcwd(), local_directory)openai_key=os.environ.get('OPENAI_API_KEY')embeddings = OpenAIEmbeddings(openai_api_key=openai_key)vectDB = Chroma.from_documents(splitData,embeddings,collection_name=collection_name,persist_directory=persist_directory)vectDB.persist()
이 코드를 실행하면 벡터를 저장하기 위해 생성된 폴더가 표시됩니다.
벡터 임베딩이 ChromaDB에 저장된 후 LangChain의 ConversationalRetrievalChain API를 사용하여 채팅 기록 구성 요소를 시작할 수 있습니다.
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)chatQA = ConversationalRetrievalChain.from_llm(OpenAI(openai_api_key=openai_key, temperature=0, model_name="gpt-3.5-turbo"), vectDB.as_retriever(), memory=memory)
langchan을 초기화한 후 채팅/QA에 사용할 수 있습니다. 아래 코드에서는 사용자가 입력한 질문을 수락하고, 사용자가 'done'을 입력한 후 질문을 LLM으로 전달하여 답변을 받아 인쇄합니다.
chat_history = []qry = ""while qry != 'done':qry = input('Question: ')if qry != exit:response = chatQA({"question": qry, "chat_history": chat_history})print(response["answer"])
간단히 말하면
RAG는 GPT와 같은 언어 모델의 장점과 정보 검색의 장점을 결합합니다. 특정 지식 맥락 정보를 활용하여 프롬프트 단어의 풍부함을 향상함으로써 언어 모델은 보다 정확한 지식 맥락 관련 답변을 생성할 수 있습니다. RAG는 "미세 조정"보다 더 효율적이고 비용 효과적인 솔루션을 제공하여 산업 애플리케이션 또는 기업 애플리케이션을 위한 맞춤형 대화형 솔루션을 제공합니다
위 내용은 엔지니어링 효율성 향상 - RAG(향상된 검색 생성)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









검색 강화 생성 및 의미론적 메모리를 AI 코딩 도우미에 통합하여 개발자 생산성, 효율성 및 정확성을 향상시킵니다. EnhancingAICodingAssistantswithContextUsingRAGandSEM-RAG에서 번역됨, 저자 JanakiramMSV. 기본 AI 프로그래밍 도우미는 자연스럽게 도움이 되지만, 소프트웨어 언어에 대한 일반적인 이해와 소프트웨어 작성의 가장 일반적인 패턴에 의존하기 때문에 가장 관련성이 높고 정확한 코드 제안을 제공하지 못하는 경우가 많습니다. 이러한 코딩 도우미가 생성한 코드는 자신이 해결해야 할 문제를 해결하는 데 적합하지만 개별 팀의 코딩 표준, 규칙 및 스타일을 따르지 않는 경우가 많습니다. 이로 인해 코드가 애플리케이션에 승인되기 위해 수정되거나 개선되어야 하는 제안이 나타나는 경우가 많습니다.

GraphRAG(Graph Retrieval Enhanced Generation)는 점차 대중화되고 있으며 기존 벡터 검색 방법을 강력하게 보완하는 수단이 되었습니다. 이 방법은 그래프 데이터베이스의 구조적 특성을 활용하여 데이터를 노드와 관계의 형태로 구성함으로써 검색된 정보의 깊이와 맥락적 관련성을 향상시킵니다. 그래프는 다양하고 상호 연관된 정보를 표현하고 저장하는 데 자연스러운 이점을 가지며, 다양한 데이터 유형 간의 복잡한 관계와 속성을 쉽게 캡처할 수 있습니다. 벡터 데이터베이스는 이러한 유형의 구조화된 정보를 처리할 수 없으며 고차원 벡터로 표현되는 구조화되지 않은 데이터를 처리하는 데 더 중점을 둡니다. RAG 애플리케이션에서 구조화된 그래프 데이터와 구조화되지 않은 텍스트 벡터 검색을 결합하면 이 기사에서 논의할 내용인 두 가지 장점을 동시에 누릴 수 있습니다. 구조

환각은 LLM(대형 언어 모델)으로 작업할 때 흔히 발생하는 문제입니다. LLM은 매끄럽고 일관된 텍스트를 생성할 수 있지만 생성되는 정보는 부정확하거나 일관성이 없는 경우가 많습니다. LLM의 환각을 방지하기 위해 데이터베이스나 지식 그래프와 같은 외부 지식 소스를 사용하여 사실 정보를 제공할 수 있습니다. 이러한 방식으로 LLM은 신뢰할 수 있는 데이터 소스를 활용하여 보다 정확하고 신뢰할 수 있는 텍스트 콘텐츠를 얻을 수 있습니다. 벡터 데이터베이스 및 지식 그래프 벡터 데이터베이스 벡터 데이터베이스는 개체나 개념을 나타내는 고차원 벡터 집합입니다. 이는 벡터 표현을 통해 계산된 다양한 엔터티 또는 개념 간의 유사성 또는 상관 관계를 측정하는 데 사용할 수 있습니다. 벡터 데이터베이스는 벡터 거리를 기반으로 "Paris"와 "France"가 "Paris"와 "France"보다 더 가깝다는 것을 알려줄 수 있습니다.

RAG(RiskAssessmentGrid)는 외부 지식 소스를 사용하여 기존 LLM(대형 언어 모델)을 강화하여 보다 상황에 맞는 답변을 제공하는 방법입니다. RAG에서 검색 구성 요소는 추가 정보를 얻고 응답은 특정 소스를 기반으로 한 다음 이 정보를 LLM 프롬프트에 제공하여 LLM의 응답이 이 정보를 기반으로 합니다(향상 단계). RAG는 트리밍과 같은 다른 기술에 비해 경제적입니다. 또한 이 정보(증강 단계)를 기반으로 추가 컨텍스트를 제공하여 환각을 줄이는 이점이 있습니다. RAG는 오늘날의 LLM 작업(예: 추천, 텍스트 추출, 감정 분석 등)을 위한 워크플로 방법이 됩니다. 사용자 의도에 따라 이 아이디어를 더 세분화하면 일반적으로 다음을 살펴봅니다.

오픈 소스 LargeLanguageMulti-Modal을 사용하여 검색 증강 생성(RAG) 시스템을 구축하는 방법을 논의합니다. 우리의 초점은 더 많은 프레임워크 종속성을 추가하지 않기 위해 LangChain 또는 LLlamaindex에 의존하지 않고 이를 달성하는 것입니다. RAG란 무엇인가 인공지능 분야에서는 RAG(Retrieval-Augmented Generation) 기술의 등장으로 대규모 언어 모델(LargeLanguageModels)이 혁명적으로 발전했습니다. RAG의 핵심은 모델이 외부 소스로부터 실시간 정보를 동적으로 검색할 수 있도록 하여 인공 지능을 향상시키는 것입니다.

오늘날 인공지능 분야에서는 대규모 모델에 많은 관심이 집중되고 있습니다. 그러나 높은 훈련 비용과 긴 훈련 시간 등의 요인이 대부분의 기업이 대규모 모델 분야에 참여하는 것을 제한하는 주요 장애물이 되었습니다. 이러한 맥락에서 고유한 장점을 지닌 벡터 데이터베이스가 문제에 대한 해결책이 되었습니다. 대형 모델의 저렴한 비용과 빠른 맞춤화가 핵심입니다. 벡터 데이터베이스는 고차원 벡터 데이터를 저장하고 처리하기 위해 특별히 설계된 기술입니다. 효율적인 인덱싱 및 쿼리 알고리즘을 사용하여 대규모 데이터를 신속하게 검색하고 분석합니다. 이러한 뛰어난 성능 외에도 벡터 데이터베이스는 특정 분야 및 작업에 대한 맞춤형 솔루션을 제공할 수도 있습니다. Tencent 및 Alibaba와 같은 거대 기술 기업은 대형 모델 분야에서 획기적인 발전을 이루기를 희망하면서 벡터 데이터베이스의 연구 및 개발에 투자했습니다. 많은 중소기업도 이점을 활용하고 있습니다.

51CTO Technology Stack에서 제작(WeChat ID: blog51cto) LLM이 환각, 즉 부정확하거나 오해의 소지가 있거나 의미 없는 정보를 생성할 수 있다는 것은 잘 알려져 있습니다. 흥미롭게도 OpenAI CEO인 Sam Altman과 같은 일부 사람들은 AI 상상력을 창의성으로 보는 반면, 다른 사람들은 상상력이 새로운 과학적 발견을 만드는 데 도움이 될 수 있다고 믿습니다. 그러나 대부분의 경우 정답을 제시하는 것이 중요하며 환각은 특징이 아니라 결함입니다. 그렇다면 LLM에 대한 환상을 줄이는 방법은 무엇입니까? 긴 맥락? 조각? 미세 조정? 실제로 긴 컨텍스트 LLM은 완벽하지 않으며 벡터 검색 RAG는 만족스럽지 않으며 미세 조정에는 고유한 과제와 한계가 있습니다. 다음은 사용할 수 있는 몇 가지입니다.

ChatGPT가 탄생한 후 강력한 텍스트 생성 기능으로 우리의 이해를 지속적으로 새롭게 해왔습니다. AI가 대학 캠퍼스에 어떤 폭발적인 변화를 가져올까? 아직 준비된 사람은 아무도 없는 것 같습니다. Nature는 ChatGPT가 학생들이 논문을 작성하는 도구가 될 것을 우려하는 기사를 발표했습니다. 기사 링크: https://www.nature.com/articles/d41586-022-04397-7 우연히도 캐나다 작가 Stephen Marche는 슬프게도 다음과 같이 말했습니다. 대학 논문은 죽었다! AI로 논문을 작성하는 것은 너무 쉽습니다. 당신이 교육학 교수이고 학문적 목적으로 학습 스타일에 관한 논문을 배정했다고 가정해 보겠습니다. 학생이 공개할 기사를 제출했습니다.
