{"record":{"id":"bfa1a8f0bf8c7ba5","repo":"apache/beam","slug":"approximate-nearest-neighbor-search-anns-field-must-be","errorCode":null,"errorMessage":"Approximate Nearest Neighbor Search (ANNS) field must be provided","messagePattern":"Approximate Nearest Neighbor Search \\(ANNS\\) field must be provided","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/ml/rag/enrichment/milvus_search.py","lineNumber":135,"sourceCode":"    limit: Maximum number of results to return per query. Must be positive.\n      Defaults to 3 search results.\n    filter: Boolean expression string for filtering search results.\n      Example: 'price <= 1000 AND category == \"electronics\"'.\n    search_params: Additional search parameters specific to the search type.\n      Example: {\"metric_type\": VectorSearchMetrics.EUCLIDEAN_DISTANCE}.\n    consistency_level: Consistency level for read operations.\n      Options: \"Strong\", \"Session\", \"Bounded\", \"Eventually\". Defaults to\n      \"Bounded\" if not specified when creating the collection.\n  \"\"\"\n  anns_field: str\n  limit: int = 3\n  filter: str = field(default_factory=str)\n  search_params: dict[str, Any] = field(default_factory=dict)\n  consistency_level: Optional[str] = None\n\n  def __post_init__(self):\n    if not self.anns_field:\n      raise ValueError(\n          \"Approximate Nearest Neighbor Search (ANNS) field must be provided\")\n\n    if self.limit <= 0:\n      raise ValueError(f\"Search limit must be positive, got {self.limit}\")\n\n\n@dataclass\nclass VectorSearchParameters(BaseSearchParameters):\n  \"\"\"Parameters for vector similarity search operations.\n\n  Inherits all parameters from BaseSearchParameters with the same semantics.\n  The anns_field should contain dense vector embeddings for this search type.\n\n  Args:\n    kwargs: Optional keyword arguments for additional vector search parameters.\n      Enables forward compatibility.\n\n  Note:","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/ml/rag/enrichment/milvus_search.py#L117-L153","documentation":"MilvusSearchParameters.__post_init__ validates the dataclass after construction. Milvus ANN search requires an `anns_field` naming the vector field to search against; if it is empty (the default_factory str), a ValueError is raised immediately.","triggerScenarios":"Constructing MilvusSearchParameters(collection_name='x', ...) without passing anns_field, or passing anns_field='' — e.g. relying on defaults instead of naming the collection's vector column.","commonSituations":"Milvus collections with a vector field not named the library's default; migrating configs from other vector DBs that don't need an anns field; copying examples that omit it.","solutions":["Pass anns_field='<name of your vector field>' when constructing MilvusSearchParameters.","Check the Milvus collection schema (Collection.schema / describe_collection) to find the vector field name.","Add a config check that asserts anns_field is non-empty before building the dataclass."],"exampleFix":"// before\nparams = MilvusSearchParameters(collection_name='docs', search_params={...})\n// after\nparams = MilvusSearchParameters(collection_name='docs', anns_field='embedding', search_params={...})","handlingStrategy":"validation","validationCode":"assert params.get('anns_field'), 'anns_field (Milvus vector field name) must be set'","typeGuard":null,"tryCatchPattern":"try:\n    search_params = MilvusSearchParameters(**cfg)\nexcept ValueError as e:\n    logging.error('Milvus search params invalid: %s', e)\n    raise","preventionTips":["Inspect the collection schema to get the exact vector field name.","Never rely on defaults for anns_field; set it explicitly in configs.","Validate dataclass configs in a unit test."],"tags":["python","milvus","rag","config"],"backgroundTag":"missing-required-argument","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}