嵌入通过为传统的基于关键词的搜索添加语义理解来与全文系统集成。像 Elasticsearch 或基于 SQL 的解决方案这样的全文系统通常匹配精确的词语或使用 TF-IDF 等评分算法。而嵌入,将文本表示为稠密的数值向量,使得这些系统即使在关键词不重叠的情况下也能找到含义相似的文档。例如,搜索“automobile”(汽车)可以通过比较向量距离而不是依赖字面文本匹配来返回包含“vehicle”(车辆)或“car”(轿车)的结果。这种集成弥合了关键词搜索和语义相关性之间的差距,在不取代现有全文功能的情况下提高了结果质量。
技术上,嵌入作为向量与原文文本数据一起存储在全文系统中。在索引过程中,每个文档的文本会通过嵌入模型(例如 BERT 或 Sentence Transformers)进行处理,生成其向量表示。当进行查询时,系统将查询文本转换为嵌入,并使用余弦相似度等相似性度量在数据库中搜索最近似的向量。为了优化性能,向量数据库或扩展(例如 PostgreSQL 的 pgvector)使用近似最近邻 (ANN) 算法,如 HNSW 或 IVF。这使得即使在大型数据集上也能实现快速检索。混合方法将传统关键词评分(例如 BM25)与向量相似度评分相结合,让开发者可以在精确性和语义相关性之间进行平衡。例如,搜索“python error handling”可能优先显示调试指南的精确关键词匹配结果,同时也会展示关于“exception management”(异常处理)的语义相关文章。
示例说明了实际用例。电子商务平台在用户搜索“durable bag”(耐用包)时,即使关键词“durable”不在商品文本中,也可以使用嵌入找到描述为“sturdy backpack”(坚固背包)的商品。支持票务系统可以使用嵌入将类似问题聚类,减少重复工作。像 Elasticsearch 的 dense_vector 字段类型或 OpenAI 的嵌入生成 API 这样的工具使开发者无需重建其搜索基础设施即可实现此功能。通过将嵌入与现有全文功能结合——例如分面过滤或提升特定字段权重——开发者可以创建更直观的搜索体验,同时保留对性能和相关性调优的控制。