대규모 RAG 구현의 표준, Neum AI 오픈소스 프레임워크 소개
요약
Neum AI는 개발자가 자체 데이터를 활용하여 LLM에 맥락을 부여하는 대규모 검색 증강 생성(RAG) 시스템 구축을 돕는 포괄적인 데이터 플랫폼입니다. 이 솔루션은 문서 스토리지, NoSQL 등 다양한 소스에서 데이터를 추출하고, 벡터 임베딩으로 처리한 후, 유사성 검색을 위한 벡터 DB에 저장하는 전 과정을 자동화합니다. 고처리량 분산 아키텍처를 통해 수십억 개의 데이터 포인트를 처리할 수 있으며, 내장된 데이터 커넥터와 실시간 동기화 기능을 제공하여 개발 시간을 획기적으로 단축시킵니다.
핵심 포인트
- 고처리량 분산 아키텍처로 수십억 개 데이터 포인트 처리가 가능하며, 임베딩 생성 및 수집에 최적화된 병렬화를 지원합니다.
- Postgres, S3, Sharepoint 등 다양한 소스에 대한 내장 데이터 커넥터와 MySQL, GitHub 등의 연결 커넥터를 제공하여 통합 데이터 관리가 용이합니다.
- 파이프라인은 데이터 소스(Source), 임베드 커넥터(Embed), 싱크 커넥터(Sink)로 구성되며, 이를 통해 웹사이트나 PostgreSQL 같은 다양한 환경에 RAG 파이프라인을 구축할 수 있습니다.
- 사용자 정의 로딩(loading), 청킹(chunking), 선택(selecting) 전처리가 가능하며, 메타데이터를 활용한 하이브리드 검색과 스마트 라우팅 기능을 지원합니다.
Neum AI 소개
Neum AI는 개발자가 검색 증강 생성(RAG)을 통해 자체 데이터를 활용하여 대규모 언어 모델(LLM)에 맥락을 부여할 수 있도록 돕는 데이터 플랫폼입니다. 여기에는 문서 스토리지 및 NoSQL과 같은 기존 데이터 소스에서 데이터를 추출하고, 내용을 벡터 임베딩으로 처리한 다음, 유사성 검색을 위해 벡터 데이터베이스에 이 벡터 임베딩을 저장하는 과정이 포함됩니다.
Neum AI는 애플리케이션 규모에 맞춰 확장할 수 있는 포괄적인 RAG 솔루션을 제공하며, 데이터 커넥터, 임베딩 모델, 벡터 데이터베이스와 같은 서비스 통합에 소요되는 시간을 줄여줍니다.
- 🏭 고처리량 분산 아키텍처: 수십억 개의 데이터 포인트를 처리할 수 있으며, 임베딩 생성 및 수집을 최적화하기 위해 높은 수준의 병렬화를 허용합니다.
- 🧱 내장 데이터 커넥터: 일반적인 데이터 소스, 임베딩 서비스 및 벡터 스토어에 대한 내장 기능을 제공합니다.
- 🔄 실시간 동기화: 데이터 소스를 실시간으로 동기화하여 항상 최신 상태의 데이터를 보장합니다.
- ♻️ 사용자 정의 데이터 전처리: 로딩(loading), 청킹(chunking), 선택(selecting) 형태의 사용자 정의 데이터 전처리가 가능합니다.
- 🤝 통합 데이터 관리: 메타데이터를 활용한 하이브리드 검색을 지원하는 통합 데이터 관리를 제공합니다. Neum AI는 풍부한 검색 경험을 제공하기 위해 자동으로 메타데이터를 증강하고 추적합니다.
팀에 문의하려면 이메일(founders@tryneum.com), 디스코드 또는 통화 일정을 잡을 수 있습니다.
오늘 dashboard.neum.ai에서 가입하세요. 시작하는 방법을 알려주는 퀵스타트를 확인해 보세요.
Neum AI Cloud는 벡터 임베딩을 통해 수백만 개의 문서를 실행할 수 있는 대규모 분산 아키텍처를 지원합니다. 전체 기능 세트는 다음을 참조하세요: [Cloud vs Local]
Neum AI 설치 및 사용 예시
1. 라이브러리 설치
pip install neumai
첫 번째 데이터 파이프라인을 생성하려면 퀵스타트를 방문하세요.
파이프라인 개요: 파이프라인은 데이터를 가져올 하나 이상의 소스, 콘텐츠를 벡터화할 하나의 임베드 커넥터, 그리고 해당 벡터를 저장할 하나의 싱크 커넥터로 구성됩니다. 다음 코드 스니펫으로 이 모든 것을 만들고 파이프라인을 실행해 보겠습니다.
from neumai.DataConnectors.WebsiteConnector import WebsiteConnector
from neumai.Shared.Selector import Selector
from neumai.Loaders.HTMLLoader import HTMLLoader
from neumai.Chunkers.RecursiveChunker import RecursiveChunker
from neumai.Sources.SourceConnector import SourceConnector
from neumai.EmbedConnectors import OpenAIEmbed
from neumai.SinkConnectors import WeaviateSink
from neumai.Pipelines import Pipeline
website_connector = WebsiteConnector(
url = "https://www.neum.ai/post/retrieval-augmented-generation-at-scale",
selector = Selector()
to_metadata=['url']
)
source = SourceConnector(
data_connector = website_connector,
loader = HTMLLoader(),
chunker = RecursiveChunker()
)
openai_embed = OpenAIEmbed(
api_key = "<OPEN AI KEY>",
)
weaviate_sink = WeaviateSink(
url = "your-weaviate-url",
api_key = "your-api-key",
class_name = "your-class-name",
)
pipeline = Pipeline(
sources=[source],
embed=openai_embed,
sink=weaviate_sink
)
pipeline.run()
results = pipeline.search(
query="What are the challenges with scaling RAG?",
number_of_results=3
)
for result in results:
print(result.metadata)
2. PostgreSQL 데이터 소스 예시
from neumai.DataConnectors.PostgresConnector import PostgresConnector
from neumai.Shared.Selector import Selector
from neumai.Loaders.JSONLoader import JSONLoader
from neumai.Chunkers.RecursiveChunker import RecursiveChunker
from neumai.Sources.SourceConnector import SourceConnector
from neumai.EmbedConnectors import OpenAIEmbed
from neumai.SinkConnectors import WeaviateSink
from neumai.Pipelines import Pipeline
website_connector = PostgresConnector(
connection_string = 'postgres',
query = 'Select * from ...'
)
source = SourceConnector(
data_connector = website_connector,
loader = JSONLoader(
id_key='<your id key of your jsons>',
selector=Selector(
to_embed=['property1_to_embed','property2_to_embed'],
to_metadata=['property3_to_include_in_metadata_in_vector']
)
),
chunker = RecursiveChunker()
)
openai_embed = OpenAIEmbed(
api_key = "<OPEN AI KEY>",
)
weaviate_sink = WeaviateSink(
url = "your-weaviate-url",
api_key = "your-api-key",
class_name = "your-class-name",
)
pipeline = Pipeline(
sources=[source],
embed=openai_embed,
sink=weaviate_sink
)
pipeline.run()
results = pipeline.search(
query="...",
number_of_results=3
)
for result in results:
print(result.metadata)
3. NeumClient를 사용한 파이프라인 관리
from neumai.Client.NeumClient import NeumClient
client = NeumClient(
api_key='<your neum api key, get it from https://dashboard.neum.ai',
)
client.create_pipeline(pipeline=pipeline)
만약 Neum AI를 자체 클라우드에 배포하는 데 관심이 있다면 founders@tryneum.com으로 문의하세요.
시작점으로 사용할 수 있는 샘플 백엔드 아키텍처가 GitHub에 게시되어 있습니다.
최신 목록은 문서를 방문해 주세요.
상세 기능 및 로드맵 (Details)
데이터 커넥터:
- Postgres
- Hosted Files
- Websites
- S3
- Azure Blob
- Sharepoint
- Singlestore
- Supabase Storage
- OpenAI embeddings
- Azure OpenAI embeddings
- Supabase postgres
- Weaviate
- Qdrant
- Pinecone
- Singlestore
연결 커넥터 (Connectors):
- MySQL - Source
- GitHub - Source
- Google Drive - Source
- Hugging Face - Embedding
- LanceDB - Sink
- Marqo - Sink
- Milvus - Sink
- Chroma - Sink
검색 (Search):
- Retrieval feedback
- Filter support
- Unified Neum AI filters
- Smart routing (w/ embedding based classification)
- Smart routing (w/ LLM based classification)
- Self-Query Retrieval (w/ Metadata attributes generation)
확장성 (Extensibility):
- Langchain / Llama Index Document to Neum Document converter
- Custom chunking and loading
실험적 기능 (Experimental):
- Async metadata augmentation
- Chat history connector
- Structured (SQL and GraphQL) search connector
추가적인 Neum AI 도구는 다음에서 찾을 수 있습니다:
- neumai-tools: 벡터 임베딩 생성을 위한 데이터 로드 및 청킹 전처리 도구를 포함합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기