>기술 주변기기 >일체 포함 >정점 AI를 사용하여 임베딩 모델 탐색

정점 AI를 사용하여 임베딩 모델 탐색

Lisa Kudrow
Lisa Kudrow원래의
2025-03-11 09:46:11493검색

벡터 임베딩은 시맨틱 검색 및 이상 탐지를 포함하여 많은 고급 AI 응용 프로그램의 기본입니다. 이 기사는 문장 임베딩 및 벡터 표현에 중점을 둔 임베딩에 대한 기본적인 이해를 제공합니다. 우리는 평균 풀링 및 코사인 유사성과 같은 실용적인 기술을 탐색하고, Bert를 사용하는 이중 인코더의 아키텍처를 탐구하고, 사기 탐지 및 컨텐츠 중재와 같은 작업에 대해 vertex AI를 사용한 이상 감지에서 응용 프로그램을 조사합니다.

주요 학습 목표

  • 연속 벡터 공간 내에서 단어, 문장 및 기타 데이터 유형을 나타내는 벡터 임베딩의 역할을 파악하십시오.
  • 토큰 화 및 토큰 임베드가 문장 수준 임베딩에 어떻게 기여하는지 이해합니다.
  • Vertex AI를 사용하여 임베딩 모델을 배포하기위한 주요 개념과 모범 사례를 배우기 위해 실제 AI 문제를 해결하십시오.
  • 향상된 분석 및 의사 결정을 위해 임베딩 모델을 통합하여 Vertex AI로 애플리케이션을 최적화하고 확장하는 방법을 알아보십시오.
  • 아키텍처 및 훈련 프로세스를 정의하는 듀얼 인코더 모델 교육 실습 경험을 얻으십시오.
  • 분리 포레스트와 같은 방법을 사용하여 이상 탐지를 구현하여 유사성을 포함시키는 특이 치를 식별합니다.

*이 기사는 *** Data Science Blogathon의 일부입니다.

목차

  • 정점 내장 이해
  • 문장 임베딩이 설명되었습니다
  • 문장 임베딩의 코사인 유사성
  • 듀얼 인코더 모델 교육
  • 질문 응답을위한 듀얼 인코더
  • 이중 인코더 훈련 과정
  • 정점 AI와 임베딩을 활용합니다
  • 스택 오버플로에서 데이터 세트 생성
  • 텍스트 임베딩 생성
  • 배치 임베딩 생성
  • 이상 식별
  • 이상치 탐지를위한 분리 숲
  • 결론
  • 자주 묻는 질문

정점 내장 이해

벡터 임베딩은 정의 된 공간 내에서 단어 또는 문장을 나타냅니다. 이들 벡터의 근접성은 유사성을 의미한다. 더 가까운 벡터는 더 큰 의미 론적 유사성을 나타냅니다. 처음에는 NLP에서 주로 사용되었지만 응용 프로그램은 이미지, 비디오, 오디오 및 그래프로 확장됩니다. 눈에 띄는 멀티 모달 학습 모델 인 Clip은 이미지와 텍스트 임베딩을 생성합니다.

벡터 임베딩의 주요 응용 프로그램에는 다음이 포함됩니다.

  • LLM은 입력 토큰 변환 후 토큰 임베딩으로 사용합니다.
  • 시맨틱 검색은 쿼리에 대한 가장 관련성이 높은 답변을 찾기 위해 사용합니다.
  • 검색 된 증강 생성 (RAG)에서, 문장 임베드는 관련 정보 청크의 검색을 용이하게한다.
  • 추천 시스템은이를 사용하여 제품을 나타내고 관련 항목을 식별합니다.

헝겊 파이프 라인에서 문장 임베드의 중요성을 살펴 보겠습니다.

정점 AI를 사용하여 임베딩 모델 탐색

위의 다이어그램의 검색 엔진은 사용자 쿼리와 관련된 데이터베이스 정보를 식별합니다. 변압기 기반 크로스 인코더는 쿼리를 모든 정보와 비교하여 관련성을 분류 할 수 있습니다. 그러나 이것은 느립니다. 벡터 데이터베이스는 임베딩을 저장하고 유사성 검색을 사용하여 더 빠른 대안을 제공하지만 정확도는 약간 낮을 수 있습니다.

문장 임베딩 이해

문장 임베딩은 수학 연산을 토큰 임베딩에 적용하여 생성되며, 종종 Bert 또는 GPT와 같은 미리 훈련 된 모델에 의해 생성됩니다. 다음 코드는 문장 임베딩을 만들기 위해 베르트 생성 토큰 임베딩의 평균 풀링을 보여줍니다.

 model_name = "./models/bert-base-uncased"
Tokenizer = berttokenizer.from_pretrained (model_name)
model = bertmodel.from_pretraind (model_name)

def get_sentence_embedding (문장) :
    encoded_input = tokenizer (sentence, padding = true, truncation = true, return_tensors = 'pt')
    주의 _mask = encoded_input [ 'chervice_mask']  

    Torch.no_grad ()로 :
        output = model (** encoded_input)

    token_embeddings = output.last_hidden_state
    input_mask_expanded = cherient_mask.unsqueeze (-1) .expand (token_embeddings.size ()). float ()


    sentence_embedding = torch.sum (token_embeddings * input_mask_expded, 1) / torch.clamp (input_mask_expanded.sum (1), min = 1e-9)

    return sentence_embedding.flatten (). tolist ()

이 코드는 버트 모델을로드하고 평균 풀링을 사용하여 문장 임베딩을 계산하는 함수를 정의합니다.

문장 임베딩의 코사인 유사성

코사인 유사성은 두 벡터 사이의 유사성을 측정하여 문장 임베딩을 비교하는 데 적합합니다. 다음 코드는 코사인 유사성 및 시각화를 구현합니다.

 def cosine_similarity_matrix (기능) :
    Norms = np.linalg.norm (특징, Axis = 1, keepdims = true)
    정규화 된_features = 특징 / 규범
    유사성 _matrix = np.inner (정상화 된_features, 정상화 된_features)
    Rounded_similarity_matrix = np.round (유사성 _matrix, 4)
    반환 Rounded_similarity_matrix를 반환합니다

def plot_similarity (레이블, 기능, 회전) :
    sim = cosine_similarity_matrix (기능)
    sns.set_theme (font_scale = 1.2)
    g = sns.HeatMap (sim, xticklabels = labels, yticklabels = labels, vmin = 0, vmax = 1, cmap = "ylorrd")
    g.set_xticklabels (레이블, 회전 = 회전)
    g.set_title ( "의미 텍스트 유사성")
    g

메시지 = [
    # 기술
    "나는 일을 위해 MacBook을 사용하는 것을 선호합니다.",
    "AI가 인간 직업을 인수하고 있습니까?",
    "내 노트북 ​​배터리가 너무 빨리 배출됩니다.",

    # 스포츠
    "어젯밤 월드컵 결승전을 보셨나요?",
    "르브론 제임스는 놀라운 농구 선수입니다.",
    "나는 주말에 마라톤 달리기를 좋아한다.",

    # 여행하다
    "파리는 방문하기에 아름다운 도시입니다.",
    "여름에 여행하기에 가장 좋은 곳은 무엇입니까?",
    "스위스 알프스에서 하이킹을 좋아합니다.",

    # 오락
    "최신 Marvel 영화는 환상적이었다!",
    "Taylor Swift의 노래를 들으십니까?",
    "나는 내가 좋아하는 시리즈의 시즌 전체를 폭로했다.",

]]
임베딩 = []
메시지의 t의 경우 :
    emb = get_sentence_embedding (t)
    Embeddings.Append (EMB)

plot_similarity (메시지, 임베딩, 90)

이 코드는 문장을 정의하고, 임베딩을 생성하며, 코사인 유사성을 보여주는 히트 맵을 표시합니다. 결과는 예기치 않게 높은 유사성을 보여 주어 듀얼 인코더와 같은보다 정확한 방법을 탐색하는 데 동기를 부여 할 수 있습니다.

(나머지 섹션은 핵심 정보를 유지하고 이미지 위치 및 형식을 보존하면서 원본 텍스트를 역설 및 재구성하는 비슷한 방식으로 계속됩니다.)

위 내용은 정점 AI를 사용하여 임베딩 모델 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.