用於為人工智慧編制數據索引的RTL框架,例如RAG;具有實時增量更新並支持樂高等自定義邏輯。
輪廓
CocoIndex是一款開源數據索引引擎,旨在為語義搜索、檢索增強生成(RAG)和嵌入式知識圖等人工智慧應用程式提供高質量的數據準備。它支持自定義轉換邏輯和增量更新,確保數據索引的實時性和一致性。引用turn0search0
主要特點
-
數據流編程模型:CocoIndex提供數據驅動的編程模型,允許用戶通過聲明數據流和轉換邏輯來定義索引流程,類似於電子表格中的數據和公式,使其易於理解和維護。引用turn 0 search 2
-
自定義轉換邏輯:支持用戶插入分塊、嵌入和載體存儲等自定義邏輯,以滿足特定業務需求。例如,用戶可以定義自己的數據分塊策略或選擇不同的嵌入模型。引用turn 0 search0
-
增量更新:CocoIndex具有智能狀態管理,只有在源數據或轉換邏輯發生變化時才能重新計算必要部分,避免全面重建索引,提高效率。引用turn0
-
Python SDK:CocoIndex的核心由Rust實現,並提供Python綁定,同時考慮了性能和易用性。用戶可以使用熟悉的Python語法來構建和管理索引過程。引用turn0search0
快速啟動
-
安裝CocoIndex Python庫:
pip安裝cocoindex
-
使用pgvector擴展設置Postgs資料庫:
確保安裝了Docker Compose,然後運行以下命令以啟動包含pgvector擴展的Postquist資料庫:
docker composite-f(curl -L https://raw.githubusercontent.com/cocoindex-io/cocoindex/refs/heads/main/Dev/postgres.yaml)up -d
-
定義索引流程:
使用CocoIndex的裝飾器和數據流構建器來定義文本嵌入的索引過程:
進口可可指數 @cocoindex.Flow_dev(名稱=「文本嵌入」) dev text_embedding_Flow(Flow_builder:cocoindex.FlowBuilder,data_scope:cocoindex.DataScope): #添加數據源 data_scope[「documents」] = Flow_builder.add_source(cocoindex.sources.LocalFile(路徑=「markdown_files」)) #添加收藏家 Doc_embeddings = data_scope.add_collector() #處理每個文檔 使用data_scope[「documents」].row()作為文檔: #將文檔拆分為塊 Doc[「chunks」] = Doc[「content」].transform( cocoindex.functions.SplitRecursively(langue =「markdown」,chunk_size=300,chunk_overlap=100)) #處理每個塊 以Doc[「chunks」].row()作為chunk: #嵌入塊 chunk[「embedding」] = chunk[「text」].transform( cocoindex.functions.SentenceTransformerEmbed(型號=「Entence-Transformers/all-MiniLM-L 6-v2」)) #收集嵌入和元數據以進行索引 Doc_embeddings.collect(文件名=Doc[「文件名」],location=chunk[「location」], text=chunk[「text」],embedding=chunk[「embedding」]) #將收集的數據輸出到載體存儲 Doc_embeddings. select( 「Doc_embeddings」, cocoindex.storages. Postgs(), primary_key_fields=[「file」,「location」], vector_index=[(「embedding」,cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])
上述過程定義了從本地文件讀取文檔、將其分解為塊、嵌入每個塊並將結果存儲在Postgres資料庫中的完整過程。exercite RST turn 0 search 0 RST
應用場景
CocoIndex適用於以下AI應用場景:
-
語義搜索:通過構建文本嵌入索引來實現高效的語義搜索功能。
-
檢索增強代(RAG):為生成式模型提供高質量的檢索數據,提高生成結果的準確性和相關性。
-
知識圖譜構建:通過解析和索引結構化數據來構建知識圖,以支持複雜的查詢和推理。
社區與貢獻
CocoIndex是一個採用Apache 2.0許可證的開源項目。我們歡迎社區貢獻,包括代碼改進、文檔更新、問題報告和功能請求。您可以通過以下方式參與我們的社區:
通過CocoIndex,您可以專注於業務邏輯的開發,將數據索引的複雜性留給我們,快速構建高質量的AI應用。
Github:https://github.com/cocoindex-io/cocoindex
輸油管: