本文档涵盖了OpenAI Cookbook中OpenAI嵌入在语义搜索、分类、聚类和推荐系统中的综合应用。它展示了从基本嵌入生成到复杂的向量搜索应用的实际实现,包括问答、文档检索和机器学习任务。
有关函数调用和工具集成的信息,请参阅函数调用和工具集成。有关文本分类的微调方法,请参阅微调。
此 Cookbook 中的嵌入系统遵循文本预处理、嵌入生成、向量存储和基于相似度的检索的一致模式。
来源: examples/Question_answering_using_embeddings.ipynb131-142 examples/Embedding_long_inputs.ipynb44-45 examples/utils/embeddings_utils.py40-50
文本预处理涉及细致的Token管理,以处理模型上下文限制并优化嵌入质量。
text-embedding-3-small模型使用cl100k_base编码支持多达8,191个token。对于更长的文本,系统实现了分块策略
| 模型 | 上下文长度 | 编码 |
|---|---|---|
text-embedding-3-small | 8,191 tokens | cl100k_base |
text-embedding-3-large | 8,191 tokens | cl100k_base |
来源: examples/How_to_count_tokens_with_tiktoken.ipynb38-53 examples/Embedding_long_inputs.ipynb102-106 examples/Embedding_long_inputs.ipynb181-186
对于像维基百科文章这样的大型文档,系统实现了分层分段
来源: examples/Embedding_Wikipedia_articles_for_search.ipynb154-173 examples/Embedding_Wikipedia_articles_for_search.ipynb176-201
嵌入生成遵循所有应用程序中的标准化模式
来源: examples/Using_embeddings.ipynb30-35 examples/Get_embeddings_from_dataset.ipynb89-95 examples/Question_answering_using_embeddings.ipynb615-619
对于大型数据集,系统实现了带速率限制的批量处理
来源: examples/Embedding_long_inputs.ipynb43-45 examples/Get_embeddings_from_dataset.ipynb89-95
核心搜索功能依赖于嵌入向量之间的余弦相似度
来源: examples/Question_answering_using_embeddings.ipynb608-627 examples/utils/embeddings_utils.py40-50 examples/Semantic_text_search_using_embeddings.ipynb55-79
为了提高搜索质量,系统实现了假设文档嵌入(HyDE)
来源: examples/Question_answering_using_a_search_API.ipynb317-330 examples/Question_answering_using_a_search_API.ipynb366-379
该系统通过比较文本嵌入与类别描述嵌入,实现了无需训练数据的分类
来源: examples/Zero-shot_classification_with_embeddings.ipynb54-76 examples/Multiclass_classification_for_transactions.ipynb119-151
对于监督学习,嵌入作为传统分类器的特征向量
来源: examples/Classification_using_embeddings.ipynb16-43 examples/Multiclass_classification_for_transactions.ipynb465-480
K-均值聚类揭示了嵌入空间中隐藏的分组
来源: examples/Clustering.ipynb90-99 examples/Visualizing_embeddings_in_2D.ipynb40-55
推荐系统利用嵌入相似度来查找相关项目
来源: examples/User_and_product_embeddings.ipynb24-84 examples/Recommendation_using_embeddings.ipynb39-75
此 Cookbook 展示了与多个向量数据库提供商的集成
来源: 在提示上下文中提供的高级架构图中引用
对于不同规模的数据,系统支持各种存储方法
| 缩放 | 存储方法 | 实现 |
|---|---|---|
| 小型(< 1K 文档) | CSV + pandas | pd.read_csv() 结合 ast.literal_eval() |
| 中型(1K-100K) | 向量数据库 | Pinecone, Qdrant, Chroma |
| 大型(100K+) | 分布式向量数据库 | Elasticsearch, Redis Cluster |
来源: examples/Question_answering_using_embeddings.ipynb437-449 examples/Get_embeddings_from_dataset.ipynb89-95
问答系统采用两阶段方法
该系统处理了大约2,052个维基百科文章文本片段,其成本主要由GPT生成而非嵌入计算决定。
来源: examples/Question_answering_using_embeddings.ipynb82-106 examples/Question_answering_using_embeddings.ipynb419-424
嵌入成本远低于生成成本
| 模型 | 嵌入成本 | 生成成本(1K token) |
|---|---|---|
gpt-4o | 每1K token约$0.00001 | 每次查询约$0.0025 |
gpt-4o-mini | 每1K token约$0.00001 | 每次查询约$0.00015 |
text-embedding-3-small | 每1K token约$0.00002 | 不适用 |
来源: examples/Question_answering_using_embeddings.ipynb98-105
来源: examples/Embedding_long_inputs.ipynb89-105 examples/Embedding_long_inputs.ipynb204-216