찾다
기술 주변기기일체 포함벡터 스트리밍 : 녹이있는 메모리 효율적인 인덱싱

소개

대규모 문서 임베딩을 최적화하도록 설계된 기능인 Embedanything의 벡터 스트리밍이 소개됩니다. Rust의 동시성을 사용하여 비동기 청크 및 임베딩을 활성화하면 메모리 사용량이 줄어들고 프로세스 속도를 높입니다. 오늘은 완벽한 이미지 임베딩 및 검색을 위해 Weaviate Vector 데이터베이스와 통합하는 방법을 보여 드리겠습니다.

이전 기사에서는 Embedanything을 사용하여 SuperCarching Your Embeddings 파이프 라인을 삽입 한 아이디어와 여러 양식의 임베딩을 쉽게 만드는 방법에 대해 논의했습니다. 이 기사에서는 Vector Streaming이라는 Embedanything의 새로운 기능을 소개하고 Weaviate Vector 데이터베이스에서 어떻게 작동하는지 확인하고 싶습니다.

벡터 스트리밍 : 녹이있는 메모리 효율적인 인덱싱

개요

  • Embedanything의 벡터 스트리밍은 Rust의 동시성으로 비동기 청크를 사용하여 대규모 문서 임베딩을 최적화합니다.
  • 덩어리를 병렬로 처리하여 전통적인 임베딩 방법에서 메모리 및 효율성 문제를 해결합니다.
  • Weaviate와의 통합을 통해 벡터 데이터베이스에 원활한 임베딩 및 검색이 가능합니다.
  • 벡터 스트리밍을 구현하려면 데이터베이스 어댑터를 작성하고 임베딩 모델을 시작하며 데이터를 포함시킵니다.
  • 이 접근법은 대규모 문서 임베딩을위한보다 효율적이고 확장 가능하며 유연한 솔루션을 제공합니다.

목차

  • 문제는 무엇입니까?
  • 문제에 대한 우리의 해결책
  • 예측 된 사용 사례 예제
    • 1 단계 : 어댑터를 만듭니다
    • 2 단계 : 임베딩 모델을 만듭니다
    • 3 단계 : 디렉토리를 포함시킵니다
    • 4 단계 : 벡터 데이터베이스 쿼리
    • 5 단계 : 벡터 데이터베이스 쿼리
    • 산출
  • 자주 묻는 질문

문제는 무엇입니까?

먼저, 특히 대규모 문서에서 임베딩 생성의 현재 문제를 조사하십시오. 현재 임베딩 프레임 워크는 2 단계 프로세스 (청킹 및 임베딩)에서 작동합니다. 먼저, 텍스트는 모든 파일에서 추출되며 청크/노드가 생성됩니다. 그런 다음,이 청크는 임베딩을 처리하기 위해 특정 배치 크기의 임베딩 모델로 공급됩니다. 이 작업이 완료되는 동안 청크와 임베딩은 시스템 메모리에 머물러 있습니다.

파일과 임베딩 크기가 작을 때는 문제가되지 않습니다. 그러나 이것은 많은 파일이있을 때 문제가되고 대형 모델과 더 나쁜 다중 벡터 임베드로 작업하고 있습니다. 따라서,이 작업을 수행하려면 임베딩을 처리하려면 높은 RAM이 필요합니다. 또한,이 작업이 동시에 수행되면 청크가 컴퓨팅 무가 한 작업이 아니기 때문에 청크가 생성되는 동안 많은 시간이 낭비됩니다. 청크가 만들어지면서 임베딩 모델로 전달하는 것이 효율적일 것입니다.

문제에 대한 우리의 해결책

해결책은 비동기 청크 및 임베딩 작업을 만드는 것입니다. Rust의 동시성 패턴과 스레드 안전을 사용 하여이 작업을 처리하기 위해 스레드를 효과적으로 스폰 할 수 있습니다. 이것은 Rust의 MPSC (Multi-Producer Single Consumer) 모듈을 사용하여 스레드간에 메시지를 전달합니다. 따라서, 이것은 버퍼로 내장 스레드에 전달 된 청크 스트림을 만듭니다. 버퍼가 완료되면 청크를 포함시키고 임베딩을 기본 스레드로 다시 보낸 다음 벡터 데이터베이스로 보냅니다. 이를 통해 단일 작업에서는 시간이 낭비되지 않고 병목 현상이 없습니다. 또한, 시스템은 버퍼에 청크와 임베딩 만 저장하여 벡터 데이터베이스로 이동하면 메모리에서 지우는 것입니다.

벡터 스트리밍 : 녹이있는 메모리 효율적인 인덱싱

예측 된 사용 사례 예제

이제이 기능을 실제로 보자.

embedanything을 사용하면 파일 디렉토리에서 벡터 데이터베이스로 벡터를 스트리밍하는 것은 간단한 3 단계 프로세스입니다.

  1. 벡터 데이터베이스의 어댑터 작성 : 이것은 인덱스를 생성하고, EmbedanyThing의 형식에서 데이터베이스 형식에서 메타 데이터를 변환 할 수있는 데이터베이스 기능 주변의 래퍼이며, 기능을 인덱스에 삽입하도록 함수입니다. 저명한 데이터베이스의 어댑터가 이미 작성되었으며 여기에 있습니다.
  1. 선택한 임베딩 모델을 시작하십시오. 다른 로컬 모델 또는 클라우드 모델 중에서 선택할 수 있습니다. 한 번에 스트리밍 해야하는 삽입의 수에 대해 청크 크기 및 버퍼 크기를 설정하여 구성을 결정할 수도 있습니다. 이상적으로는 가능한 한 높아야하지만 시스템 RAM은 이것을 제한합니다.
  1. Embedanything에서 임베딩 함수를 호출하십시오. 디렉토리 경로를 전달하여 임베딩 모델, 어댑터 및 구성을 전달하십시오.

이 예에서는 이미지 디렉토리를 포함하여 벡터 데이터베이스로 보냅니다.

1 단계 : 어댑터를 만듭니다

Embedanything에서, 어댑터는 라이브러리를 무겁게 만들지 않도록 외부에서 생성되며 작업하려는 데이터베이스를 선택할 수 있습니다. 다음은 weaviate를위한 간단한 어댑터입니다.

 embed_anything import embeddata에서

embed_anything.vectordb 가져 오기 어댑터에서

클래스 weaviateadapter (어댑터) :

def __init __ (self, api_key, url) :

super () .__ init __ (api_key)

self.client = weaviate.connect_to_weaviate_cloud (

cluster_url = url, auth_credentials = wvc.init.auth.api_key (api_key)

))

if self.client.is_ready () :

print ( "weaviate is ready")

def create_index (self, index_name : str) :

self.index_name = index_name

self.collection = self.client.collections.create (

index_name, vectorizer_config = wvc.config.configure.vectorizer.none ()

))

self.collection을 반환하십시오

def convert (self, Embeddings : list [embeddata]) :

데이터 = []

임베딩에 포함 :

속성 = embedding.metadata

속성 [ "text"] = embedding.text

Data.Append (

wvc.data.dataobject (properties = property, vector = embedding.embedding)

))

반환 데이터

Def Upsert (자체, 임베딩) :

data = self.convert (임베딩)

self.client.collections.get (self.index_name) .data.insert_many (데이터)

def delete_index (self, index_name : str) :

self.client.collections.delete (index_name)

### 클라이언트를 시작하고 색인을 시작하십시오

url = "your-weaciate-url"

api_key = "your-weaciate-api-key"

weaviate_adapter = weaviateadapter (api_key, url)

index_name = "test_index"

weaviate_adapter.client.collections.list_all () : index_name 인 경우 :

weaviate_adapter.delete_index (index_name)

weaviate_adapter.create_index ( "test_index")

2 단계 : 임베딩 모델을 만듭니다

여기서 이미지를 포함시키기 때문에 클립 모델을 사용할 수 있습니다.

 import embed_anything import whathmodel

model = embed_anything.embeddingmodel.from_pretraind_cloud (

embed_anything.whichmodel.clip,

모델_)

3 단계 : 디렉토리를 포함시킵니다

 data = embed_anything.embed_image_directory (

"\ image_directory",

Embeder = 모델,

어댑터 = weaviate_adapter,

config = embed_anything.imageembedconfig (buffer_size = 100),

))

4 단계 : 벡터 데이터베이스 쿼리

 query_vector = embed_anything.embed_query ([ "고양이의 이미지"], embeder = model) [0] .embedding

5 단계 : 벡터 데이터베이스 쿼리

 응답 = weaviate_adapter.collection.query.near_vector (

near_vector = query_vector,

한계 = 2,

return_metadata = wvc.query.metadataquery (확실한 = true),

))

응답을 확인하십시오.

산출

클립 모델을 사용하여 고양이, 개 및 원숭이 사진으로 전체 디렉토리를 벡터화했습니다. 간단한 쿼리 "고양이의 이미지"를 통해 고양이 이미지에 대한 모든 파일을 검색 할 수있었습니다.

벡터 스트리밍 : 녹이있는 메모리 효율적인 인덱싱

Colab에서 코드의 노트를 확인하십시오.

결론

벡터 스트리밍은 많은 엔지니어들이보다 최적화되고 비 기술 부채 솔루션을 선택할 수있는 기능 중 하나라고 생각합니다. 클라우드에서 부피가 큰 프레임 워크를 사용하는 대신 경량 스트리밍 옵션을 사용할 수 있습니다.

여기에서 Github Repo를 확인하십시오 : Imbedanything Repo.

자주 묻는 질문

Q1. embedanything에서 벡터 스트리밍이란 무엇입니까?

Ans. 벡터 스트리밍은 비동기 청크 및 임베딩을 위해 Rust의 동시성을 사용하여 메모리 사용량을 줄이고 프로세스 속도를 높이는 대규모 문서 임베딩을 최적화하는 기능입니다.

Q2. 벡터 스트리밍은 어떤 문제를 해결합니까?

Ans. 청크를 비동기로 처리하고 병목 현상을 줄이고 리소스 사용을 최적화하여 기존 임베딩 방법의 높은 메모리 사용 및 비 효율성을 다룹니다.

Q3. 벡터 스트리밍은 Weaviate와 어떻게 작동합니까?

Ans. 어댑터를 사용하여 임베디를 weaviate 벡터 데이터베이스와 연결하여 데이터의 완벽한 내장 및 쿼리를 허용합니다.

Q4. 벡터 스트리밍을 사용하기위한 단계는 무엇입니까?

Ans. 다음은 다음과 같습니다.
1. 데이터베이스 어댑터를 만듭니다.
2. 임베딩 모델을 시작하십시오.
3. 디렉토리를 포함시킵니다.
4. 벡터 데이터베이스를 쿼리하십시오.

Q5. 전통적인 방법을 통해 벡터 스트리밍을 사용하는 이유는 무엇입니까?

Ans. 전통적인 임베딩 방법에 비해 더 나은 효율성, 메모리 사용량, 확장 성 및 유연성을 제공합니다.

위 내용은 벡터 스트리밍 : 녹이있는 메모리 효율적인 인덱싱의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

ON-DEVICE AI의 힘을 활용 : 개인 챗봇 CLI 구축 최근에 개인 AI 조수의 개념은 공상 과학처럼 보였다. 기술 애호가 인 Alex, 똑똑하고 현지 AI 동반자를 꿈꾸는 것을 상상해보십시오.

정신 건강을위한 AI는 스탠포드 대학교의 흥미로운 새로운 이니셔티브를 통해주의 깊게 분석됩니다.정신 건강을위한 AI는 스탠포드 대학교의 흥미로운 새로운 이니셔티브를 통해주의 깊게 분석됩니다.Apr 18, 2025 am 11:49 AM

AI4MH의 첫 출시는 2025 년 4 월 15 일에 열렸으며, 유명한 정신과 의사이자 신경 과학자 인 Luminary Dr. Tom Insel 박사는 킥오프 스피커 역할을했습니다. Insel 박사는 정신 건강 연구 및 테크노에서 뛰어난 작업으로 유명합니다.

2025 WNBA 드래프트 클래스는 리그가 성장하고 온라인 괴롭힘과 싸우고 있습니다.2025 WNBA 드래프트 클래스는 리그가 성장하고 온라인 괴롭힘과 싸우고 있습니다.Apr 18, 2025 am 11:44 AM

Engelbert는 "WNBA가 모든 사람, 플레이어, 팬 및 기업 파트너가 안전하고 가치가 있으며 권한을 부여받는 공간으로 남아 있기를 원합니다. 아노

파이썬 내장 데이터 구조에 대한 포괄적 인 가이드 - 분석 Vidhya파이썬 내장 데이터 구조에 대한 포괄적 인 가이드 - 분석 VidhyaApr 18, 2025 am 11:43 AM

소개 Python은 특히 데이터 과학 및 생성 AI에서 프로그래밍 언어로 탁월합니다. 대규모 데이터 세트를 처리 할 때 효율적인 데이터 조작 (저장, 관리 및 액세스)이 중요합니다. 우리는 이전에 숫자와 st를 다루었습니다

대안과 비교하여 OpenAi의 새로운 모델의 첫인상대안과 비교하여 OpenAi의 새로운 모델의 첫인상Apr 18, 2025 am 11:41 AM

다이빙하기 전에 중요한 경고 : AI 성능은 비 결정적이며 고도로 사용하는 것이 중요합니다. 간단히 말하면 마일리지는 다를 수 있습니다. 이 기사 (또는 다른) 기사를 최종 단어로 취하지 마십시오. 대신 에이 모델을 자신의 시나리오에서 테스트하십시오.

AI 포트폴리오 | AI 경력을위한 포트폴리오를 구축하는 방법은 무엇입니까?AI 포트폴리오 | AI 경력을위한 포트폴리오를 구축하는 방법은 무엇입니까?Apr 18, 2025 am 11:40 AM

뛰어난 AI/ML 포트폴리오 구축 : 초보자 및 전문가를위한 안내서 인공 지능 (AI) 및 머신 러닝 (ML)의 역할을 확보하는 데 강력한 포트폴리오를 만드는 것이 중요합니다. 이 안내서는 포트폴리오 구축에 대한 조언을 제공합니다

보안 운영에 대한 에이전트 AI가 무엇을 의미 할 수 있는지보안 운영에 대한 에이전트 AI가 무엇을 의미 할 수 있는지Apr 18, 2025 am 11:36 AM

결과? 소진, 비 효율성 및 탐지와 동작 사이의 넓은 차이. 이 중 어느 것도 사이버 보안에서 일하는 사람에게는 충격이되지 않습니다. 그러나 에이전트 AI의 약속은 잠재적 인 전환점으로 부상했다. 이 새로운 수업

Google 대 Openai : AI 학생들을위한 AI 싸움Google 대 Openai : AI 학생들을위한 AI 싸움Apr 18, 2025 am 11:31 AM

장기 파트너십 대 즉각적인 영향? 2 주 전 Openai는 2025 년 5 월 말까지 미국과 캐나다 대학생들에게 Chatgpt Plus에 무료로 이용할 수있는 강력한 단기 제안으로 발전했습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구