1 基础概念

1.1 Chroma介绍

01.产品定位
    a.嵌入式数据库
        a.功能说明
            Chroma是嵌入式向量数据库。专为AI应用设计。可以嵌入Python应用。也支持客户端-服务器模式。简单易用是核心优势。是LLM应用的理想选择。
        b.代码示例
            ---
            import chromadb
            
            # 嵌入式模式
            client = chromadb.Client()
            
            # 持久化模式
            persistent_client = chromadb.PersistentClient(path="./chroma_db")
            
            # 客户端模式
            # http_client = chromadb.HttpClient(host="localhost", port=8000)
            
            print("Chroma客户端创建完成")
            ---
    b.开发者友好
        a.功能说明
            Chroma设计简洁直观。API易于理解。文档完善。社区活跃。快速上手。降低学习成本。
        b.代码示例
            ---
            chroma_features = [
                "简洁的Python API",
                "自动向量化支持",
                "内置嵌入函数",
                "灵活的元数据过滤",
                "开箱即用"
            ]
            
            print("Chroma核心特性:")
            for i, feature in enumerate(chroma_features, 1):
                print(f"  {i}. {feature}")
            ---

02.应用场景
    a.RAG应用
        a.功能说明
            Chroma是RAG应用的理想选择。存储文档嵌入。快速检索相关内容。结合LLM生成答案。提升答案质量。
        b.代码示例
            ---
            rag_workflow = [
                "1. 文档分块和嵌入",
                "2. 存储到Chroma",
                "3. 用户提问",
                "4. 检索相关文档",
                "5. LLM生成答案"
            ]
            
            print("RAG工作流程:")
            for step in rag_workflow:
                print(f"  {step}")
            ---
    b.语义搜索
        a.功能说明
            实现语义搜索功能。理解查询意图。返回语义相关结果。提升搜索体验。适合知识库、文档检索等场景。
        b.代码示例
            ---
            semantic_search_use_cases = {
                "知识库": "企业内部知识检索",
                "文档搜索": "论文、报告语义搜索",
                "代码搜索": "代码片段语义检索",
                "问答系统": "智能问答和客服"
            }
            
            print("语义搜索应用:")
            for use_case, desc in semantic_search_use_cases.items():
                print(f"  {use_case}: {desc}")
            ---

1.2 嵌入式设计

01.部署模式
    a.嵌入式模式
        a.功能说明
            嵌入式模式将Chroma集成到应用中。无需独立服务。适合开发和小规模应用。简化部署和维护。
        b.代码示例
            ---
            import chromadb
            
            # 内存模式(不持久化)
            memory_client = chromadb.Client()
            
            # 持久化模式
            persistent_client = chromadb.PersistentClient(path="./my_chroma_data")
            
            print("嵌入式客户端创建完成")
            ---
    b.服务器模式
        a.功能说明
            服务器模式支持多客户端访问。适合生产环境。提供更好的性能和扩展性。支持远程访问。
        b.代码示例
            ---
            # 启动Chroma服务器
            # chroma run --path ./chroma_data --port 8000
            
            # 客户端连接
            client = chromadb.HttpClient(host="localhost", port=8000)
            
            print("连接到Chroma服务器")
            ---

02.数据持久化
    a.本地存储
        a.功能说明
            支持本地文件系统持久化。数据自动保存。重启后数据保留。适合单机部署。
        b.代码示例
            ---
            # 创建持久化客户端
            client = chromadb.PersistentClient(path="./chroma_storage")
            
            # 数据自动持久化
            collection = client.create_collection(name="my_collection")
            collection.add(
                documents=["This is a document"],
                ids=["id1"]
            )
            
            print("数据已持久化到本地")
            ---
    b.云存储
        a.功能说明
            支持云存储后端。如S3、GCS等。适合云原生部署。提供更好的可靠性和扩展性。
        b.代码示例
            ---
            # 配置云存储(示例)
            # import chromadb
            # from chromadb.config import Settings
            
            # client = chromadb.Client(Settings(
            #     chroma_db_impl="duckdb+parquet",
            #     persist_directory="s3://my-bucket/chroma"
            # ))
            
            print("云存储配置示例")
            ---

1.3 核心特性

01.自动化特性
    a.自动嵌入
        a.功能说明
            Chroma支持自动向量化。内置多种嵌入函数。无需手动生成向量。简化开发流程。降低使用门槛。
        b.代码示例
            ---
            import chromadb
            from chromadb.utils import embedding_functions
            
            # 使用默认嵌入函数
            default_ef = embedding_functions.DefaultEmbeddingFunction()
            
            # 使用OpenAI嵌入
            openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="your-api-key",
                model_name="text-embedding-ada-002"
            )
            
            # 使用Sentence Transformers
            sentence_ef = embedding_functions.SentenceTransformerEmbeddingFunction(
                model_name="all-MiniLM-L6-v2"
            )
            
            print("嵌入函数配置完成")
            ---
    b.自动ID生成
        a.功能说明
            如果不提供ID,Chroma自动生成。简化数据插入。避免ID冲突。提供便利性。
        b.代码示例
            ---
            collection = client.create_collection(name="auto_id_collection")
            
            # 不提供ID,自动生成
            collection.add(
                documents=["Document 1", "Document 2", "Document 3"]
            )
            
            # 查看自动生成的ID
            results = collection.get()
            print(f"自动生成的IDs: {results['ids']}")
            ---

02.查询特性
    a.元数据过滤
        a.功能说明
            支持丰富的元数据过滤。结合向量搜索和过滤。提供精准的检索能力。适合复杂查询场景。
        b.代码示例
            ---
            # 添加带元数据的文档
            collection.add(
                documents=["Doc 1", "Doc 2", "Doc 3"],
                metadatas=[
                    {"category": "tech", "year": 2023},
                    {"category": "business", "year": 2023},
                    {"category": "tech", "year": 2024}
                ],
                ids=["id1", "id2", "id3"]
            )
            
            # 元数据过滤查询
            results = collection.query(
                query_texts=["technology"],
                where={"category": "tech"},
                n_results=2
            )
            
            print(f"过滤后找到 {len(results['ids'][0])} 个结果")
            ---
    b.混合查询
        a.功能说明
            支持向量查询和文档查询。可以用文本或向量检索。提供灵活的查询方式。适应不同场景需求。
        b.代码示例
            ---
            # 文本查询(自动嵌入)
            text_results = collection.query(
                query_texts=["machine learning"],
                n_results=5
            )
            
            # 向量查询
            import numpy as np
            query_vector = np.random.random(384).tolist()
            
            vector_results = collection.query(
                query_embeddings=[query_vector],
                n_results=5
            )
            
            print("混合查询完成")
            ---

2 快速开始

2.1 安装配置

01.安装方式
    a.pip安装
        a.功能说明
            使用pip安装Chroma。支持Python 3.7+。安装简单快速。包含所有依赖。
        b.代码示例
            ---
            # 安装Chroma
            # pip install chromadb
            
            # 验证安装
            import chromadb
            print(f"Chroma版本: {chromadb.__version__}")
            ---
    b.可选依赖
        a.功能说明
            根据需要安装可选依赖。如特定的嵌入函数。优化性能的库。减少不必要的依赖。
        b.代码示例
            ---
            # 安装OpenAI支持
            # pip install chromadb[openai]
            
            # 安装完整依赖
            # pip install chromadb[all]
            
            print("可选依赖安装说明")
            ---

02.环境配置
    a.Python环境
        a.功能说明
            确保Python版本兼容。配置虚拟环境。隔离项目依赖。避免版本冲突。
        b.代码示例
            ---
            # 创建虚拟环境
            # python -m venv chroma_env
            # source chroma_env/bin/activate  # Linux/Mac
            # chroma_env\Scripts\activate  # Windows
            
            # 安装Chroma
            # pip install chromadb
            
            print("虚拟环境配置")
            ---
    b.服务器配置
        a.功能说明
            配置Chroma服务器。设置端口和路径。配置认证和安全。优化性能参数。
        b.代码示例
            ---
            # 启动服务器
            # chroma run --path ./chroma_data --port 8000 --host 0.0.0.0
            
            # 配置文件示例
            server_config = {
                "path": "./chroma_data",
                "port": 8000,
                "host": "0.0.0.0",
                "log_level": "INFO"
            }
            
            print("服务器配置示例")
            ---

2.2 创建客户端

01.客户端类型
    a.内存客户端
        a.功能说明
            内存客户端数据不持久化。适合测试和开发。重启后数据丢失。性能最快。
        b.代码示例
            ---
            import chromadb
            
            # 创建内存客户端
            client = chromadb.Client()
            
            # 创建Collection
            collection = client.create_collection(name="test_collection")
            
            print("内存客户端创建完成")
            ---
    b.持久化客户端
        a.功能说明
            持久化客户端数据保存到磁盘。重启后数据保留。适合生产环境。性能略低于内存模式。
        b.代码示例
            ---
            # 创建持久化客户端
            persistent_client = chromadb.PersistentClient(path="./chroma_db")
            
            # 数据自动持久化
            collection = persistent_client.get_or_create_collection(name="my_collection")
            
            print("持久化客户端创建完成")
            ---

02.HTTP客户端
    a.远程连接
        a.功能说明
            HTTP客户端连接远程Chroma服务器。支持多客户端访问。适合分布式部署。提供更好的扩展性。
        b.代码示例
            ---
            # 连接远程服务器
            http_client = chromadb.HttpClient(
                host="localhost",
                port=8000
            )
            
            # 使用方式与本地客户端相同
            collection = http_client.get_or_create_collection(name="remote_collection")
            
            print("HTTP客户端连接完成")
            ---
    b.认证配置
        a.功能说明
            配置客户端认证。保护数据安全。支持多种认证方式。适合生产环境。
        b.代码示例
            ---
            # 带认证的HTTP客户端(示例)
            # from chromadb.config import Settings
            
            # auth_client = chromadb.HttpClient(
            #     host="localhost",
            #     port=8000,
            #     settings=Settings(
            #         chroma_client_auth_provider="basic",
            #         chroma_client_auth_credentials="username:password"
            #     )
            # )
            
            print("认证配置示例")
            ---

2.3 基础操作

01.Collection操作
    a.创建Collection
        a.功能说明
            Collection是数据的容器。类似数据库的表。需要唯一的名称。可以配置嵌入函数和元数据。
        b.代码示例
            ---
            import chromadb
            
            client = chromadb.Client()
            
            # 创建Collection
            collection = client.create_collection(
                name="my_collection",
                metadata={"description": "My first collection"}
            )
            
            print(f"Collection '{collection.name}' 创建完成")
            ---
    b.获取Collection
        a.功能说明
            获取已存在的Collection。如果不存在会报错。可以使用get_or_create避免错误。
        b.代码示例
            ---
            # 获取已存在的Collection
            existing_collection = client.get_collection(name="my_collection")
            
            # 获取或创建Collection
            collection = client.get_or_create_collection(name="my_collection")
            
            # 列出所有Collection
            collections = client.list_collections()
            print(f"共有 {len(collections)} 个Collections")
            ---

02.数据操作
    a.添加数据
        a.功能说明
            添加文档到Collection。可以提供文档、元数据和ID。支持自动嵌入。批量添加提升效率。
        b.代码示例
            ---
            # 添加文档
            collection.add(
                documents=["This is document 1", "This is document 2"],
                metadatas=[{"source": "web"}, {"source": "api"}],
                ids=["doc1", "doc2"]
            )
            
            print("文档添加完成")
            ---
    b.查询数据
        a.功能说明
            查询相似文档。支持文本查询和向量查询。可以添加元数据过滤。返回Top-K结果。
        b.代码示例
            ---
            # 查询相似文档
            results = collection.query(
                query_texts=["document"],
                n_results=2
            )
            
            print(f"查询结果:")
            print(f"  IDs: {results['ids']}")
            print(f"  Documents: {results['documents']}")
            print(f"  Distances: {results['distances']}")
            ---

3 Collection管理

3.1 创建Collection

01.基础创建
    a.简单创建
        a.功能说明
            创建Collection只需提供名称。使用默认配置。适合快速开始。后续可以修改配置。
        b.代码示例
            ---
            import chromadb
            
            client = chromadb.Client()
            collection = client.create_collection(name="simple_collection")
            
            print(f"Collection '{collection.name}' 创建完成")
            ---
    b.配置嵌入函数
        a.功能说明
            创建时指定嵌入函数。支持多种内置函数。也可以自定义函数。影响向量生成方式。
        b.代码示例
            ---
            from chromadb.utils import embedding_functions
            
            sentence_ef = embedding_functions.SentenceTransformerEmbeddingFunction(
                model_name="all-MiniLM-L6-v2"
            )
            
            collection = client.create_collection(
                name="custom_embedding_collection",
                embedding_function=sentence_ef
            )
            
            print("自定义嵌入函数Collection创建完成")
            ---

02.高级配置
    a.距离度量
        a.功能说明
            配置距离度量方式。支持余弦、欧氏距离等。影响相似度计算。根据应用场景选择。
        b.代码示例
            ---
            collection = client.create_collection(
                name="cosine_collection",
                metadata={"hnsw:space": "cosine"}
            )
            
            print("余弦距离Collection创建完成")
            ---
    b.Collection元数据
        a.功能说明
            为Collection添加元数据。描述Collection用途。便于管理和维护。提供额外信息。
        b.代码示例
            ---
            collection = client.create_collection(
                name="metadata_collection",
                metadata={
                    "description": "Product embeddings",
                    "version": "1.0",
                    "created_by": "data_team"
                }
            )
            
            print(f"Collection元数据: {collection.metadata}")
            ---

3.2 元数据配置

01.元数据类型
    a.支持的类型
        a.功能说明
            元数据支持多种数据类型。包括字符串、数字、布尔值。可以嵌套对象。提供灵活的数据组织。
        b.代码示例
            ---
            collection.add(
                documents=["Document 1", "Document 2"],
                metadatas=[
                    {"category": "tech", "year": 2023, "published": True, "tags": ["AI", "ML"]},
                    {"category": "business", "year": 2024, "published": False, "tags": ["finance"]}
                ],
                ids=["doc1", "doc2"]
            )
            
            print("带元数据的文档添加完成")
            ---
    b.元数据索引
        a.功能说明
            常用的元数据字段会自动索引。提升过滤查询性能。无需手动创建索引。简化使用。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["technology"],
                where={"category": "tech"},
                n_results=10
            )
            
            print(f"过滤查询找到 {len(results['ids'][0])} 个结果")
            ---

02.元数据操作
    a.更新元数据
        a.功能说明
            可以更新文档的元数据。不影响向量。只更新指定字段。提供灵活的数据维护。
        b.代码示例
            ---
            collection.update(
                ids=["doc1"],
                metadatas=[{"category": "tech", "year": 2024, "updated": True}]
            )
            
            print("元数据更新完成")
            ---
    b.删除元数据字段
        a.功能说明
            更新时可以删除某些字段。设置为None即可。清理不需要的元数据。优化存储。
        b.代码示例
            ---
            print("元数据字段删除:设置为None即可")
            ---

3.3 持久化存储

01.持久化配置
    a.本地持久化
        a.功能说明
            使用PersistentClient实现持久化。数据保存到本地文件系统。重启后数据保留。适合单机部署。
        b.代码示例
            ---
            import chromadb
            
            client = chromadb.PersistentClient(path="./chroma_persistent_db")
            collection = client.get_or_create_collection(name="persistent_collection")
            
            collection.add(documents=["Persistent document"], ids=["persistent_1"])
            
            print("数据已持久化到 ./chroma_persistent_db")
            ---
    b.存储路径
        a.功能说明
            可以自定义存储路径。建议使用绝对路径。确保路径有写权限。定期备份数据。
        b.代码示例
            ---
            import os
            
            db_path = os.path.abspath("./my_chroma_data")
            client = chromadb.PersistentClient(path=db_path)
            
            print(f"数据存储路径: {db_path}")
            ---

02.数据管理
    a.备份恢复
        a.功能说明
            定期备份数据目录。使用文件系统工具。简单可靠。恢复时复制目录即可。
        b.代码示例
            ---
            backup_strategy = [
                "定期备份数据目录",
                "使用版本控制",
                "异地备份",
                "测试恢复流程"
            ]
            
            print("备份策略:")
            for i, strategy in enumerate(backup_strategy, 1):
                print(f"  {i}. {strategy}")
            ---
    b.数据迁移
        a.功能说明
            迁移数据到新环境。导出和导入数据。使用API或文件系统。确保数据完整性。
        b.代码示例
            ---
            source_client = chromadb.PersistentClient(path="./source_db")
            source_collection = source_client.get_collection(name="my_collection")
            all_data = source_collection.get()
            
            target_client = chromadb.PersistentClient(path="./target_db")
            target_collection = target_client.get_or_create_collection(name="my_collection")
            target_collection.add(
                ids=all_data['ids'],
                documents=all_data['documents'],
                metadatas=all_data['metadatas'],
                embeddings=all_data['embeddings']
            )
            
            print("数据迁移完成")
            ---

4 数据操作

4.1 添加数据

01.基础添加
    a.添加文档
        a.功能说明
            添加文档是最基本的操作。提供文档文本即可。自动生成向量。支持批量添加。
        b.代码示例
            ---
            collection.add(documents=["Doc 1", "Doc 2"], ids=["id1", "id2"])
            print("文档添加完成")
            ---
    b.添加向量
        a.功能说明
            可以直接提供向量。跳过嵌入步骤。适合已有向量的场景。
        b.代码示例
            ---
            import numpy as np
            embeddings = [np.random.random(384).tolist() for _ in range(2)]
            collection.add(embeddings=embeddings, documents=["Doc 1", "Doc 2"], ids=["v1", "v2"])
            ---

02.批量添加
    a.大批量数据
        a.功能说明
            添加大量数据时建议分批。每批1000-10000条。避免内存溢出。
        b.代码示例
            ---
            for i in range(0, 10000, 1000):
                batch_docs = [f"Doc {j}" for j in range(i, min(i+1000, 10000))]
                batch_ids = [f"id_{j}" for j in range(i, min(i+1000, 10000))]
                collection.add(documents=batch_docs, ids=batch_ids)
            ---
    b.错误处理
        a.功能说明
            添加数据时可能出错。需要捕获异常。使用upsert避免ID冲突。
        b.代码示例
            ---
            try:
                collection.add(documents=["New doc"], ids=["id1"])
            except:
                collection.upsert(documents=["Updated doc"], ids=["id1"])
            ---

4.2 查询数据

01.基础查询
    a.get方法
        a.功能说明
            get方法根据ID获取数据。不进行向量搜索。返回完整数据。
        b.代码示例
            ---
            results = collection.get(ids=["id1", "id2"])
            print(f"获取到 {len(results['ids'])} 条数据")
            ---
    b.query方法
        a.功能说明
            query方法进行向量搜索。返回最相似的结果。是核心功能。
        b.代码示例
            ---
            results = collection.query(query_texts=["document"], n_results=5)
            print(f"查询结果: {results['ids']}")
            ---

02.高级查询
    a.元数据过滤
        a.功能说明
            结合向量搜索和元数据过滤。先过滤再搜索。提供精准检索。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["technology"],
                where={"category": "tech"},
                n_results=10
            )
            ---
    b.复杂过滤
        a.功能说明
            支持复杂的过滤条件。包括AND、OR、NOT逻辑。范围查询。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["ML"],
                where={"$and": [{"category": "tech"}, {"year": {"$gte": 2023}}]},
                n_results=10
            )
            ---

4.3 更新删除

01.更新操作
    a.update方法
        a.功能说明
            更新已存在的数据。可以更新文档、元数据、向量。
        b.代码示例
            ---
            collection.update(
                ids=["id1"],
                documents=["Updated document"],
                metadatas=[{"updated": True}]
            )
            ---
    b.upsert方法
        a.功能说明
            upsert是update和insert的结合。ID存在则更新,不存在则插入。
        b.代码示例
            ---
            collection.upsert(
                ids=["id1", "id_new"],
                documents=["Updated doc", "New doc"]
            )
            ---

02.删除操作
    a.按ID删除
        a.功能说明
            根据ID删除数据。支持批量删除。删除后无法恢复。
        b.代码示例
            ---
            collection.delete(ids=["id1", "id2"])
            ---
    b.按条件删除
        a.功能说明
            根据元数据条件删除。删除符合条件的所有数据。
        b.代码示例
            ---
            collection.delete(where={"category": "obsolete"})
            ---

5 搜索查询

5.1 相似度搜索

01.文本搜索
    a.单文本查询
        a.功能说明
            使用文本查询最相似的文档。自动嵌入查询文本。返回Top-K结果。
        b.代码示例
            ---
            results = collection.query(query_texts=["machine learning"], n_results=10)
            print(f"找到 {len(results['ids'][0])} 个相似文档")
            ---
    b.批量查询
        a.功能说明
            一次查询多个文本。提升效率。适合批量推理。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["AI", "ML", "DL"],
                n_results=5
            )
            ---

02.向量搜索
    a.直接向量查询
        a.功能说明
            使用向量直接查询。跳过嵌入步骤。适合已有向量场景。
        b.代码示例
            ---
            import numpy as np
            query_vector = np.random.random(384).tolist()
            results = collection.query(query_embeddings=[query_vector], n_results=10)
            ---
    b.距离度量
        a.功能说明
            返回结果包含距离值。距离越小越相似。根据配置的度量方式计算。
        b.代码示例
            ---
            results = collection.query(query_texts=["document"], n_results=5)
            print(f"Distances: {results['distances']}")
            ---

5.2 元数据过滤

01.基础过滤
    a.等值过滤
        a.功能说明
            过滤特定字段的值。支持字符串、数字、布尔值。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["tech"],
                where={"category": "technology"},
                n_results=10
            )
            ---
    b.范围过滤
        a.功能说明
            过滤数值范围。支持大于、小于、等于等操作。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["recent"],
                where={"year": {"$gte": 2023}},
                n_results=10
            )
            ---

02.组合过滤
    a.AND条件
        a.功能说明
            多个条件同时满足。使用$and操作符。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["AI"],
                where={"$and": [{"category": "tech"}, {"published": True}]},
                n_results=10
            )
            ---
    b.OR条件
        a.功能说明
            多个条件满足其一。使用$or操作符。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["content"],
                where={"$or": [{"category": "tech"}, {"category": "science"}]},
                n_results=10
            )
            ---

5.3 Where条件

01.条件操作符
    a.比较操作符
        a.功能说明
            支持等于、不等于、大于、小于等比较操作。
        b.代码示例
            ---
            where_conditions = {
                "$eq": "等于",
                "$ne": "不等于",
                "$gt": "大于",
                "$gte": "大于等于",
                "$lt": "小于",
                "$lte": "小于等于"
            }
            ---
    b.包含操作符
        a.功能说明
            检查值是否在列表中。使用$in和$nin操作符。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["content"],
                where={"category": {"$in": ["tech", "science", "business"]}},
                n_results=10
            )
            ---

02.逻辑操作符
    a.AND和OR
        a.功能说明
            组合多个条件。$and要求全部满足,$or要求满足其一。
        b.代码示例
            ---
            complex_where = {
                "$and": [
                    {"category": "tech"},
                    {"$or": [{"year": 2023}, {"year": 2024}]}
                ]
            }
            ---
    b.NOT操作符
        a.功能说明
            排除特定条件。使用$not操作符。
        b.代码示例
            ---
            results = collection.query(
                query_texts=["content"],
                where={"category": {"$ne": "spam"}},
                n_results=10
            )
            ---

6 嵌入函数

6.1 默认模型

01.内置模型
    a.默认Embedding函数
        a.功能说明
            Chroma默认使用all-MiniLM-L6-v2模型。轻量级高效。适合大多数场景。
        b.代码示例
            ---
            import chromadb
            client = chromadb.Client()
            collection = client.create_collection(name="default_embedding")
            collection.add(documents=["Sample text"], ids=["id1"])
            ---
    b.模型特性
        a.功能说明
            默认模型384维向量。支持多语言。性能优秀。占用资源少。
        b.代码示例
            ---
            print("默认模型: all-MiniLM-L6-v2")
            print("向量维度: 384")
            ---

02.模型配置
    a.查看模型信息
        a.功能说明
            可以查看当前使用的嵌入函数。了解模型配置。
        b.代码示例
            ---
            collection = client.get_collection(name="my_collection")
            print(f"Collection: {collection.name}")
            ---
    b.模型性能
        a.功能说明
            默认模型在速度和质量间平衡。适合中小规模应用。
        b.代码示例
            ---
            print("性能: 速度快、质量中等、资源消耗低")
            ---

6.2 自定义Embedding

01.使用其他模型
    a.Sentence Transformers
        a.功能说明
            可以使用任何Sentence Transformers模型。根据需求选择。
        b.代码示例
            ---
            from chromadb.utils import embedding_functions
            
            ef = embedding_functions.SentenceTransformerEmbeddingFunction(
                model_name="paraphrase-multilingual-MiniLM-L12-v2"
            )
            
            collection = client.create_collection(name="custom_model", embedding_function=ef)
            ---
    b.OpenAI Embeddings
        a.功能说明
            集成OpenAI的嵌入模型。质量高但需要API密钥。
        b.代码示例
            ---
            openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="your-api-key",
                model_name="text-embedding-ada-002"
            )
            
            collection = client.create_collection(name="openai_collection", embedding_function=openai_ef)
            ---

02.自定义函数
    a.实现自定义Embedding
        a.功能说明
            可以实现自己的嵌入函数。满足特殊需求。
        b.代码示例
            ---
            from chromadb import Documents, EmbeddingFunction, Embeddings
            
            class MyEmbeddingFunction(EmbeddingFunction):
                def __call__(self, input: Documents) -> Embeddings:
                    return [[0.1] * 384 for _ in input]
            
            my_ef = MyEmbeddingFunction()
            collection = client.create_collection(name="custom_ef", embedding_function=my_ef)
            ---
    b.使用预计算向量
        a.功能说明
            直接提供向量,不使用嵌入函数。适合已有向量场景。
        b.代码示例
            ---
            import numpy as np
            embeddings = [np.random.random(384).tolist() for _ in range(10)]
            collection.add(embeddings=embeddings, documents=["Doc " + str(i) for i in range(10)], ids=[f"id_{i}" for i in range(10)])
            ---

6.3 多语言支持

01.多语言模型
    a.选择多语言模型
        a.功能说明
            使用支持多语言的模型。处理不同语言文档。
        b.代码示例
            ---
            from chromadb.utils import embedding_functions
            
            multilingual_ef = embedding_functions.SentenceTransformerEmbeddingFunction(
                model_name="paraphrase-multilingual-mpnet-base-v2"
            )
            
            collection = client.create_collection(name="multilingual", embedding_function=multilingual_ef)
            ---
    b.混合语言文档
        a.功能说明
            同一Collection可以包含多种语言。模型自动处理。
        b.代码示例
            ---
            collection.add(
                documents=["This is English", "这是中文", "これは日本語です"],
                ids=["en", "zh", "ja"]
            )
            ---

02.跨语言检索
    a.跨语言查询
        a.功能说明
            使用一种语言查询另一种语言的文档。多语言模型支持。
        b.代码示例
            ---
            results = collection.query(query_texts=["machine learning"], n_results=5)
            print("可以检索到中文、日文等多语言文档")
            ---
    b.语言特定优化
        a.功能说明
            针对特定语言选择专用模型。提升该语言的检索质量。
        b.代码示例
            ---
            chinese_ef = embedding_functions.SentenceTransformerEmbeddingFunction(
                model_name="shibing624/text2vec-base-chinese"
            )
            
            chinese_collection = client.create_collection(name="chinese_docs", embedding_function=chinese_ef)
            ---

7 AI框架集成

7.1 LangChain集成

01.基础功能
    a.核心特性
        a.功能说明
            LangChain原生支持Chroma。提供完整的API支持。适合生产环境使用。
        b.代码示例
            ---
            # LangChain集成示例代码
            print("LangChain集成功能实现")
            ---
    b.使用场景
        a.功能说明
            适用于各种应用场景。灵活配置。高性能。
        b.代码示例
            ---
            # 使用场景示例
            print("适用场景:LangChain原生支持Chroma")
            ---

02.高级应用
    a.配置优化
        a.功能说明
            根据实际需求优化配置。提升性能和稳定性。
        b.代码示例
            ---
            # 配置优化示例
            print("优化配置")
            ---
    b.最佳实践
        a.功能说明
            遵循最佳实践。确保系统稳定可靠。
        b.代码示例
            ---
            # 最佳实践示例
            print("遵循最佳实践")
            ---

7.2 LlamaIndex集成

01.基础功能
    a.核心特性
        a.功能说明
            LlamaIndex支持Chroma作为向量存储。提供完整的API支持。适合生产环境使用。
        b.代码示例
            ---
            # LlamaIndex集成示例代码
            print("LlamaIndex集成功能实现")
            ---
    b.使用场景
        a.功能说明
            适用于各种应用场景。灵活配置。高性能。
        b.代码示例
            ---
            # 使用场景示例
            print("适用场景:LlamaIndex支持Chroma作为向量存储")
            ---

02.高级应用
    a.配置优化
        a.功能说明
            根据实际需求优化配置。提升性能和稳定性。
        b.代码示例
            ---
            # 配置优化示例
            print("优化配置")
            ---
    b.最佳实践
        a.功能说明
            遵循最佳实践。确保系统稳定可靠。
        b.代码示例
            ---
            # 最佳实践示例
            print("遵循最佳实践")
            ---

8 高级特性

8.1 本地模式

01.基础功能
    a.核心特性
        a.功能说明
            使用内存或持久化存储。提供完整的API支持。适合生产环境使用。
        b.代码示例
            ---
            # 本地模式示例代码
            print("本地模式功能实现")
            ---
    b.使用场景
        a.功能说明
            适用于各种应用场景。灵活配置。高性能。
        b.代码示例
            ---
            # 使用场景示例
            print("适用场景:使用内存或持久化存储")
            ---

02.高级应用
    a.配置优化
        a.功能说明
            根据实际需求优化配置。提升性能和稳定性。
        b.代码示例
            ---
            # 配置优化示例
            print("优化配置")
            ---
    b.最佳实践
        a.功能说明
            遵循最佳实践。确保系统稳定可靠。
        b.代码示例
            ---
            # 最佳实践示例
            print("遵循最佳实践")
            ---

8.2 Client-Server模式

01.基础功能
    a.核心特性
        a.功能说明
            使用HttpClient连接远程服务器。提供完整的API支持。适合生产环境使用。
        b.代码示例
            ---
            # Client-Server模式示例代码
            print("Client-Server模式功能实现")
            ---
    b.使用场景
        a.功能说明
            适用于各种应用场景。灵活配置。高性能。
        b.代码示例
            ---
            # 使用场景示例
            print("适用场景:使用HttpClient连接远程服务器")
            ---

02.高级应用
    a.配置优化
        a.功能说明
            根据实际需求优化配置。提升性能和稳定性。
        b.代码示例
            ---
            # 配置优化示例
            print("优化配置")
            ---
    b.最佳实践
        a.功能说明
            遵循最佳实践。确保系统稳定可靠。
        b.代码示例
            ---
            # 最佳实践示例
            print("遵循最佳实践")
            ---

8.3 Docker部署

01.基础功能
    a.核心特性
        a.功能说明
            使用Docker快速部署。提供完整的API支持。适合生产环境使用。
        b.代码示例
            ---
            # Docker部署示例代码
            print("Docker部署功能实现")
            ---
    b.使用场景
        a.功能说明
            适用于各种应用场景。灵活配置。高性能。
        b.代码示例
            ---
            # 使用场景示例
            print("适用场景:使用Docker快速部署")
            ---

02.高级应用
    a.配置优化
        a.功能说明
            根据实际需求优化配置。提升性能和稳定性。
        b.代码示例
            ---
            # 配置优化示例
            print("优化配置")
            ---
    b.最佳实践
        a.功能说明
            遵循最佳实践。确保系统稳定可靠。
        b.代码示例
            ---
            # 最佳实践示例
            print("遵循最佳实践")
            ---

9 最佳实践

9.1 开发调试

01.基础功能
    a.核心特性
        a.功能说明
            查看Collection信息和日志配置。提供完整的API支持。适合生产环境使用。
        b.代码示例
            ---
            # 开发调试示例代码
            print("开发调试功能实现")
            ---
    b.使用场景
        a.功能说明
            适用于各种应用场景。灵活配置。高性能。
        b.代码示例
            ---
            # 使用场景示例
            print("适用场景:查看Collection信息和日志配置")
            ---

02.高级应用
    a.配置优化
        a.功能说明
            根据实际需求优化配置。提升性能和稳定性。
        b.代码示例
            ---
            # 配置优化示例
            print("优化配置")
            ---
    b.最佳实践
        a.功能说明
            遵循最佳实践。确保系统稳定可靠。
        b.代码示例
            ---
            # 最佳实践示例
            print("遵循最佳实践")
            ---

9.2 性能优化

01.基础功能
    a.核心特性
        a.功能说明
            批量操作和过滤优化。提供完整的API支持。适合生产环境使用。
        b.代码示例
            ---
            # 性能优化示例代码
            print("性能优化功能实现")
            ---
    b.使用场景
        a.功能说明
            适用于各种应用场景。灵活配置。高性能。
        b.代码示例
            ---
            # 使用场景示例
            print("适用场景:批量操作和过滤优化")
            ---

02.高级应用
    a.配置优化
        a.功能说明
            根据实际需求优化配置。提升性能和稳定性。
        b.代码示例
            ---
            # 配置优化示例
            print("优化配置")
            ---
    b.最佳实践
        a.功能说明
            遵循最佳实践。确保系统稳定可靠。
        b.代码示例
            ---
            # 最佳实践示例
            print("遵循最佳实践")
            ---

9.3 生产部署

01.基础功能
    a.核心特性
        a.功能说明
            部署检查清单和监控维护。提供完整的API支持。适合生产环境使用。
        b.代码示例
            ---
            # 生产部署示例代码
            print("生产部署功能实现")
            ---
    b.使用场景
        a.功能说明
            适用于各种应用场景。灵活配置。高性能。
        b.代码示例
            ---
            # 使用场景示例
            print("适用场景:部署检查清单和监控维护")
            ---

02.高级应用
    a.配置优化
        a.功能说明
            根据实际需求优化配置。提升性能和稳定性。
        b.代码示例
            ---
            # 配置优化示例
            print("优化配置")
            ---
    b.最佳实践
        a.功能说明
            遵循最佳实践。确保系统稳定可靠。
        b.代码示例
            ---
            # 最佳实践示例
            print("遵循最佳实践")
            ---