벡터 스트리밍 : 녹이있는 메모리 효율적인 인덱싱
소개
대규모 문서 임베딩을 최적화하도록 설계된 기능인 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 단계 프로세스입니다.
- 벡터 데이터베이스의 어댑터 작성 : 이것은 인덱스를 생성하고, EmbedanyThing의 형식에서 데이터베이스 형식에서 메타 데이터를 변환 할 수있는 데이터베이스 기능 주변의 래퍼이며, 기능을 인덱스에 삽입하도록 함수입니다. 저명한 데이터베이스의 어댑터가 이미 작성되었으며 여기에 있습니다.
- 선택한 임베딩 모델을 시작하십시오. 다른 로컬 모델 또는 클라우드 모델 중에서 선택할 수 있습니다. 한 번에 스트리밍 해야하는 삽입의 수에 대해 청크 크기 및 버퍼 크기를 설정하여 구성을 결정할 수도 있습니다. 이상적으로는 가능한 한 높아야하지만 시스템 RAM은 이것을 제한합니다.
- 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. 벡터 데이터베이스를 쿼리하십시오.
Ans. 전통적인 임베딩 방법에 비해 더 나은 효율성, 메모리 사용량, 확장 성 및 유연성을 제공합니다.
위 내용은 벡터 스트리밍 : 녹이있는 메모리 효율적인 인덱싱의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











이 기사는 최고의 AI 아트 생성기를 검토하여 자신의 기능, 창의적인 프로젝트에 대한 적합성 및 가치에 대해 논의합니다. Midjourney를 전문가에게 최고의 가치로 강조하고 고품질의 사용자 정의 가능한 예술에 Dall-E 2를 추천합니다.

메타의 라마 3.2 : 멀티 모달 및 모바일 AI의 도약 Meta는 최근 AI에서 강력한 비전 기능과 모바일 장치에 최적화 된 가벼운 텍스트 모델을 특징으로하는 AI의 상당한 발전 인 Llama 3.2를 공개했습니다. 성공을 바탕으로 o

이 기사는 Chatgpt, Gemini 및 Claude와 같은 최고의 AI 챗봇을 비교하여 고유 한 기능, 사용자 정의 옵션 및 자연어 처리 및 신뢰성의 성능에 중점을 둡니다.

이 기사는 Grammarly, Jasper, Copy.ai, Writesonic 및 Rytr와 같은 최고의 AI 작문 조수에 대해 논의하여 콘텐츠 제작을위한 독특한 기능에 중점을 둡니다. Jasper는 SEO 최적화가 뛰어나고 AI 도구는 톤 구성을 유지하는 데 도움이된다고 주장합니다.

이번 주 AI 환경 : 발전의 회오리 바람, 윤리적 고려 사항 및 규제 토론. OpenAi, Google, Meta 및 Microsoft와 같은 주요 플레이어

Shopify CEO Tobi Lütke의 최근 메모는 AI 숙련도가 모든 직원에 대한 근본적인 기대를 대담하게 선언하여 회사 내에서 중요한 문화적 변화를 표시합니다. 이것은 도망가는 트렌드가 아닙니다. 그것은 p에 통합 된 새로운 운영 패러다임입니다

이봐, 코딩 닌자! 하루 동안 어떤 코딩 관련 작업을 계획 했습니까? 이 블로그에 더 자세히 살펴보기 전에, 나는 당신이 당신의 모든 코딩 관련 문제에 대해 생각하기를 원합니다. 완료? - ’

이 기사는 Google Cloud, Amazon Polly, Microsoft Azure, IBM Watson 및 Destript와 같은 최고의 AI 음성 생성기를 검토하여 기능, 음성 품질 및 다양한 요구에 대한 적합성에 중점을 둡니다.
