当前位置: 首页 > news >正文

Milvus(13):自定义分析器、过滤器

1 自定义分析器

1.1 标准标记符

        Milvus 中的standard 令牌分割器根据空格和标点符号分割文本,适用于大多数语言。要配置使用standard 令牌转换器的分析器,请在analyzer_params 中将tokenizer 设置为standard 。

analyzer_params = {"tokenizer": "standard",
}

   standard 标记符号分析器可与一个或多个过滤器结合使用。例如,以下代码定义了一个使用standard 标记器和lowercase 过滤器的分析器:

analyzer_params = {"tokenizer": "standard","filter": ["lowercase"]
}

        定义analyzer_params 后,可以在定义 Collections Schema 时将它们应用到VARCHAR 字段。这样,Milvus 就能使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

1.2 空格

        只要单词之间有空格,whitespace 标记符号器就会将文本划分为术语。要配置使用whitespace 标记符号生成器的分析器,请在analyzer_params 中将tokenizer 设置为whitespace 。

analyzer_params = {"tokenizer": "whitespace",
}

        空白标记符可以与一个或多个过滤器结合使用。例如,下面的代码定义了一个使用whitespace 标记符和lowercase过滤器的分析器:

analyzer_params = {"tokenizer": "whitespace","filter": ["lowercase"]
}

        定义analyzer_params 后,可以在定义 Collections Schema 时将它们应用到VARCHAR 字段。这样,Milvus 就能使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

1.3 词霸

   jieba 标记符号转换器可将中文文本分解为单词。

# 简单配置:仅指定标记器名称
analyzer_params = {"tokenizer": "jieba",  # 使用默认设置:dict=["_default_"], mode="search", hmm=true
}

         分析器配置示例:

analyzer_params = {"tokenizer": {"type": "jieba","dict": ["结巴分词器"],"mode": "exact","hmm": False}
}

        预期输出:

['milvus', '结巴分词器', '中', '文', '测', '试']

2 过滤器

2.1 小写

   lowercase 过滤器将标记符号生成器生成的术语转换为小写,使搜索不区分大小写。例如,它可以将["High", "Performance", "Vector", "Database"] 转换为["high", "performance", "vector", "database"] 。

   lowercase 过滤器内置于 Milvus。要使用它,只需在analyzer_params 中的filter 部分指定其名称即可。

analyzer_params = {"tokenizer": "standard","filter": ["lowercase"],
}

   lowercase 过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

2.2 ASCII 折叠

   asciifolding 过滤器可将基本拉丁统一码块(前 127 个 ASCII 字符)以外的字符转换为其 ASCII 对应字符。asciifolding 过滤器内置在 Milvus 中。要使用它,只需在analyzer_params 中的filter 部分指定其名称即可。

analyzer_params = {"tokenizer": "standard","filter": ["asciifolding"],
}

   asciifolding 过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

2.3 仅字母

   alphanumonly 过滤器删除包含非 ASCII 字符的标记,只保留字母数字术语。该过滤器适用于处理只有基本字母和数字的文本,不包括任何特殊字符或符号。alphanumonly 过滤器内置在 Milvus 中。要使用它,只需在analyzer_params 中的filter 部分指定其名称即可。

analyzer_params = {"tokenizer": "standard","filter": ["alphanumonly"],
}

   alphanumonly 过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

        预期输出

['Milvus', '2', '0', 'Scale', 'AI', 'Vector']

2.4 Cnalphanumonly

   cnalphanumonly 过滤器会删除包含除汉字、英文字母或数字以外的任何字符的标记。cnalphanumonly 过滤器内置于 Milvus 中。要使用它,只需在analyzer_params 中的filter 部分指定其名称即可。

analyzer_params = {"tokenizer": "standard","filter": ["cnalphanumonly"],
}

   cnalphanumonly 过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

        预期输出

['Milvus', '是', 'LF', 'AI', 'Data', 'Foundation', '下的一个开源项目', '以', 'Apache', '2', '0', '许可发布']

2.5 Cncharonly

   cncharonly 过滤器会删除包含任何非中文字符的标记。当您只想关注中文文本,过滤掉任何包含其他脚本、数字或符号的标记时,该过滤器非常有用。cncharonly 过滤器内置在 Milvus 中。要使用它,只需在analyzer_params 中的filter 部分指定其名称即可。

analyzer_params = {"tokenizer": "standard","filter": ["cncharonly"],
}

   cncharonly 过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

        预期输出

['是', '下的一个开源项目', '以', '许可发布']

2.6 长度

   length 过滤器可移除不符合指定长度要求的标记,让您可以控制文本处理过程中保留的标记长度。length 过滤器是 Milvus 中的自定义过滤器,通过在过滤器配置中设置"type": "length" 来指定。您可以在analyzer_params 中将其配置为字典,以定义长度限制。

analyzer_params = {"tokenizer": "standard","filter":[{"type": "length", # 指定过滤器类型为length"max": 10, # 将最大令牌长度设置为10个字符}],
}

   length 过滤器接受以下可配置参数。

参数

说明

max

设置最大标记长度。超过此长度的标记将被删除。

   length 过滤器对标记符生成器生成的术语进行操作,因此必须与标记符生成器结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

2.7 停止词

   stop 过滤器会从标记化文本中移除指定的停止词,帮助剔除常见的、意义不大的词。您可以使用stop_words 参数配置停用词列表。stop 过滤器是 Milvus 的自定义过滤器。要使用它,请在过滤器配置中指定"type": "stop" 以及提供停用词列表的stop_words 参数。

analyzer_params = {"tokenizer": "standard","filter":[{"type": "stop", # S指定过滤器类型为stop"stop_words": ["of", "to", "_english_"], # 定义自定义停止词并包括英语停止词列表}],
}

   stop 过滤器接受以下可配置参数。

参数

说明

stop_words

要从标记化中删除的单词列表。默认情况下,使用预定义的_english_ 列表,其中包含常见的英文停止词。

   stop 过滤器对标记化器生成的词语进行操作,因此必须与标记化器结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

2.8 分词器

   decompounder 过滤器可根据指定词典将复合词拆分成单个成分,从而更方便地搜索复合词的各个部分。该过滤器对德语等经常使用复合词的语言尤其有用。decompounder 过滤器是 Milvus 的自定义过滤器。要使用它,请在过滤器配置中指定"type": "decompounder" ,同时指定word_list 参数,该参数提供了要识别的单词成分字典。

analyzer_params = {"tokenizer": "standard","filter":[{"type": "decompounder", # 指定过滤器类型为分解器"word_list": ["dampf", "schiff", "fahrt", "brot", "backen", "automat"],}],
}

   decompounder 过滤器接受以下可配置参数。

参数

说明

word_list

用于拆分复合词的单词成分列表。该字典决定了如何将复合词分解为单个术语。

   decompounder 过滤器对标记化器生成的术语进行操作,因此必须与标记化器结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

        预期输出

['dampf', 'schiff', 'fahrt', 'brotbackautomat']

2.9 词干

   stemmer 过滤器可将单词还原为其基本形式或词根形式(称为词干化),从而更容易匹配不同词性中含义相似的单词。stemmer 过滤器支持多种语言,可在各种语言环境中进行有效搜索和索引。stemmer 过滤器是 Milvus 的自定义过滤器。要使用它,请在过滤器配置中指定"type": "stemmer" ,并使用language 参数选择所需的语言进行词干处理。

analyzer_params = {"tokenizer": "standard","filter":[{"type": "stemmer", # 将筛选器类型指定为stemmer"language": "english", # 将词干提取的语言设置为英语}],
}

   stemmer 过滤器接受以下可配置参数。

参数

参数

language

指定词干处理的语言。支持的语言包括"arabic","danish","dutch","english","finnish","french","german","greek","hungarian","italian","norwegian","portuguese","romanian","russian","spanish","swedish","tamil" 、"turkish"

   stemmer 过滤器对标记化器生成的术语进行操作,因此必须与标记化器结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

相关文章:

  • Prompt compress 技术探究-LLMLingua
  • 【Linux】深入理解程序地址空间
  • WPF中Behaviors
  • [特殊字符] 人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总) [特殊字符]
  • leetcode 59. 螺旋矩阵 II
  • 大连理工大学选修——图形学:第二章 计算机图形硬件及绘图系统
  • Git推送大文件导致提交回退的完整解决记录
  • 短信侠 - 自建手机短信转发到电脑上并无感识别复制验证码,和找手机输验证码说再见!
  • LLM论文笔记 28: Universal length generalization with Turing Programs
  • 365打卡第R6周: LSTM实现糖尿病探索与预测
  • idea结合CopilotChat进行样式调整实践
  • [pdf,epub]292页《分析模式》漫谈合集01-59提供下载
  • STM32Cube-FreeRTOS任务管理工具函数-笔记
  • ActiveMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 的选型参考(一)
  • 个性化推荐:大数据引领电子商务精准营销新时代
  • 探秘 Git 底层原理:理解版本控制的基石
  • 【现代深度学习技术】现代循环神经网络06:编码器-解码器架构
  • Python基本语法(lambda表达式)
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】2.3 窗口函数与高级聚合(ROW_NUMBER()/RANK()/SUM() OVER())
  • 服务器部署一个千问2.5-14B、32B并发布为接口
  • 《开始推理吧3》:演员没包袱,推理更共情
  • 电商平台集体出手,多措并举助力外贸企业拓内销
  • 大众、学术和政治三重框架下的“汉末之变”
  • 少数人的奢侈品还是所有人的必需品:我们如何解构创造力?
  • 准80后遵义市自然资源局局长陈清松任仁怀市委副书记、代市长
  • 国家医保局副局长颜清辉调任人社部副部长