Public Docs
【模型量化】深度学习模型量化 & 量化理论 & 各平台的量化过程 & 硬件加速
【TVM】TI关于TVM的使用测试与分析
【LLM&LVM】大模型开源工程思维导图
【北航卓越工程师】《汽车前沿技术导论:智能驾驶》讲义
【工具链】Yocto使用介绍——使用Yocto创建一个树莓派的系统镜像
【工具链】使用ssh+dialog指令设定服务器指定用户仅容器访问
【推理引擎】一篇关于模型推理的详细对比与学习
【推理引擎】关于TVM中的Schedule优化详解(On going)
【LLM微调】使用litgpt进行私有数据集模型微调的测试总结
【TVM】在TVM Relay中创建一个自定义操作符
【STT+LLM+TTS】如何使用语音转文字模型+大预言模型+语音生成模型完成一个类人的语音交互机器人
【RAG】 通过RAG构建垂直领域的LLM Agent的方法探索
【RAG】GraphRAG精读与测试(On going)
【AI Agent】MetaGPT精读与学习
【AI Base】Ilya Sutskever 27篇必读论文分享清单
【Nvidia】Jetson AGX Orin/ Jetson Orin nano 硬件测试调试内容(On going)
【BI/DI】LLM Using in BI Testing Scenario (On going)
【Nvidia】How to Activate a Camera on Nvidia Platform in Details
【RAS-PI】树莓派驱动开发
【行业咨询阅读】关注实时咨询和分析
【mobileye】2024 Driving AI
【mobileye】SDS_Safety_Architecture
【yolo】yolov8测试
【nvidia】Triton server实践
【alibaba】MNN(on updating)
【OpenAI】Triton(on updating)
【CAIS】关于Compound AI Systems的思考
【Nvidia】关于Cuda+Cudnn+TensorRT推理环境
【BEV】BEVDet在各个平台上的执行效率及优化(On Updating)
【Chip】AI在芯片设计和电路设计中的应用
【Chip】ChiPFormer
【Chip】关于布线的学习
【Chip】MaskPlace论文精读与工程复现优化
【gynasium】强化学习初体验
【Cadence】X AI
【transformer】MinGPT开源工程学习
【中间件】针对apollo 10.0中关于cyberRT性能优化的深度解读和思考
【Robotics】调研了解当前机器人开发者套件(on updating)
【Robotics】ROS CON China 2024 文档技术整理与感想总结(上2024.12.7,中2024.12.8,下场外产品)
【algorithm】关于模型、数据与标注规范的平衡问题
【nvidia】DLA的学习了解与使用
【nvidia】构建nvidia嵌入式平台的交叉编译环境(其他环境平台可借鉴)
【2025AI生成式大会】2025大会个人总结
【Robotics】 Create Quadruped Robot RL FootStep Training Environment In IsaacLab
【Robotics】如何一个人较为完整的完成一个机器人系统软件算法层面的设计与开发
【VLM】读懂多模态大模型评价指标
【VLM】大模型部署的端侧部署性能与精度评估方法与分析
【Nvidia】Jetson Orin 平台VLM部署方法与指标评测
【Database】向量数据库
文档发布于【Feng's Docs】
-
+
首页
【Database】向量数据库
# 0 Pre-talk 首先简单解释一下什么是向量数据库,顾名思义用来保存向量化的东西。 所谓向量化embadding,就是把一些离散的数据用向量表示,而向量的维度可以指定,例如将水果表示成一个1*800的向量,那可以把苹果表示为[0,1.1,-1.2 ...... 0,0.2],香蕉表示为[0,1.2,-1.1 ...... 0,-0.5] ,等等。然后把这些结果保存在向量数据库里方便搜索。例如找到口感偏硬的水果,那经过计算,有可能计算出的关联性苹果的距离比较小,那就会返回苹果和他对应的距离,当然也可以返回多个结果,可以按照更加具象的信息得到想要的结果。这就是向量化,向量搜索,对应的整个数据库就是向量数据库。注意Embadding和tokenizer不同,Emabbding是把一个词,或者一个句子或者是token表示成向量,输入是词,是token输出是向量。而Tokenizer则是把一大段话拆分成一个个的token,输入是一大段内容,输出是一个个token。 通过搜索了解到: 1. 产品简介 - Infinity 是国内较新的向量数据库,主打高性能和分布式架构,适用于大规模 AI 检索与分析场景。社区活跃度和生态正在快速发展。 - Chroma 是开源、轻量级的向量数据库,专注于 AI 应用原型和嵌入存储,易于集成,主要面向快速开发和小规模应用。作为单节点服务器,非常适合处理少量集合中少于 1000 万条记录的中小型工作负载。作为一个可扩展的分布式系统——非常适合大规模生产工作负载,支持数百万个集合。 - Milvus 是全球最流行的开源分布式向量数据库,支持超大规模数据,拥有强大的扩展性和高性能,广泛用于推荐系统、图像/视频检索和大模型 RAG 场景。 2. 主要差异分析 - Infinity 更偏向企业级和大规模分布式场景,强调性能与可扩展性,适合对检索速度和并发有较高要求的业务。 - Chroma 适合快速开发和 AI 原型验证,集成简单但不支持分布式和高性能场景,主要用于小规模或教学实验。 - Milvus 行业认可度最高,社区完善,性能和扩展性全面,适合各种规模的向量检索应用,尤其是大模型和海量数据场景。 ## 所以依次使用和测试一下相关产品 测试用例,将四大名著的txt版本保存到各个数据库中,然后搜索一些关键任务,看看能否给出较为准确的表述和结果。其中涉及到的一些关节内容包括:https://github.com/tennessine/corpus - 如何将四大名著做拆分,向量表达能力,对中文的理解 - 拆分的结果如何向量化 - 向量嵌入模型的语义表达能力 - 分段/分句策略与检索粒度 - 查看搜索结果是否准确 - 构造丰富内容的搜索query # 1 Chroma ## 1.0 了解学习chroma https://github.com/chroma-core/chroma https://docs.trychroma.com/docs/overview/introduction https://docs.trychroma.com/docs/overview/getting-started ## 1.1 CreateCollection * 一段示例代码展示 测试用例中创建collection并通过持久化保存数据的过程。以下代码在执行时遇到了几个问题: * 在不手动添加embedding function时,因为默认的all-MiniLM-L6-v2 无法识别中文的缘故,效果并不理想,后来切换为sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2之后,效果也仍然不准确,最终在使用一个纯的中文embeddingfunction之后,结果出现明显改善shibing624/text2vec-base-chinese;GanymedeNil/text2vec-large-chinese * 其次,就是关于如何分段,整个内容要按照一定的字数或者段落进行分段,既不能太大,太大可能会将要搜索的内容淹没在上下文中,太小可能又会因为上下文不足而使得无法获得准确信息。测试之后选择文本中以换行符作为每个段落的分割线,用来保存信息的最小单位。当然也需要考虑所要索引的信息,如果查询内容例如是以一些非常简单的词语作为搜索单位,那可能适当缩减上下文减少段落长度,可能也会有正向的效果 ``` python import chromadb from chromadb.config import Settings import re def split_by_paragraph(text): # 去除多余空行,按段落分割 paragraphs = [p.strip() for p in re.split(r'\n\s*\n', text) if p.strip()] return paragraphs def batch_insert(collection, documents, metadatas, ids, batch_size=5000): # chromadb.errors.InternalError: ValueError: Batch size of 14355 is greater than max batch size of 5461 total = len(documents) for start in range(0, total, batch_size): end = start + batch_size collection.add( documents=documents[start:end], metadatas=metadatas[start:end], ids=ids[start:end] ) print(f"added {end if end < total else total} / {total}") from sentence_transformers import SentenceTransformer import chromadb.utils.embedding_functions as embedding_functions huggingface_ef = embedding_functions.SentenceTransformerEmbeddingFunction( model_name="shibing624/text2vec-base-chinese" ) client = chromadb.PersistentClient(path="./test_chromadb", settings=Settings(anonymized_telemetry=False)) collection = client.get_or_create_collection(name="legal_docs", embedding_function=huggingface_ef) files = ['../corpus/三国演义.txt', '../corpus/西游记.txt', '../corpus/红楼梦.txt', '../corpus/水浒传.txt'] files_name = ['sanguo', 'xiyou', 'honglou', 'shuihu'] text_files = {} for file, filename in zip(files, files_name): with open(file, 'r', encoding='utf-8') as f: text_files[filename] = f.read() documents = [] metadatas = [] ids = [] for name in files_name: text = text_files[name] paragraphs = split_by_paragraph(text) for idx, para in enumerate(paragraphs): documents.append(para) metadatas.append({"source": name, "paragraph_id": idx}) ids.append(f"{name}_para_{idx}") batch_insert(collection, documents, metadatas, ids, batch_size=5000) ``` ## 1.2 Search Query 完成上面的collection构建之后,其次就是测试一下搜索了。可以看到基本上可以比较准确的找到相关内容,但是内容的关联度方面还有进一步的提升空间 ``` python # Query/search 2 most similar results. You can also .get by idresults = collection.query( query_texts=["This is a query document"], n_results=2, # where={"metadata_field": "is_equal_to_this"}, # optional filter # where_document={"$contains":"search_string"} # optional filter ) ``` ``` python import chromadb from chromadb.config import Settings # from sentence_transformers import SentenceTransformer client = chromadb.PersistentClient(path="./test_chromadb", settings=Settings(anonymized_telemetry=False)) collection = client.get_collection(name="legal_docs") print(collection.query(query_texts=["诸葛亮"], n_results=4)) print(collection.query(query_texts=["曹操"], n_results=4)) print(collection.query(query_texts=["林冲"], n_results=4)) print(collection.query(query_texts=["林黛玉"], n_results=4)) print(collection.query(query_texts=["孙悟空"], n_results=4)) # {'ids': [['sanguo_para_689', 'sanguo_para_960', 'sanguo_para_703', 'sanguo_para_1197']], 'embeddings': None, 'documents': [['第五十回 诸葛亮智算华容 关云长义释曹操', '第七十二回 诸葛亮智取汉中 曹阿瞒兵退斜谷', '第五十二回 诸葛亮智辞鲁肃 赵子龙计取桂阳', '第九十二回\u3000赵子龙力斩五将\u3000诸葛亮智取三城']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'paragraph_id': 689, 'source': 'sanguo'}, {'source': 'sanguo', 'paragraph_id': 960}, {'paragraph_id': 703, 'source': 'sanguo'}, {'paragraph_id': 1197, 'source': 'sanguo'}]], 'distances': [[0.31971609592437744, 0.3514571189880371, 0.36328935623168945, 0.36847245693206787]]} # {'ids': [['sanguo_para_960', 'sanguo_para_689', 'sanguo_para_470', 'shuihu_para_3151']], 'embeddings': None, 'documents': [['第七十二回 诸葛亮智取汉中 曹阿瞒兵退斜谷', '第五十回 诸葛亮智算华容 关云长义释曹操', '第三十一回 曹操仓亭破本初 玄德荆州依刘表', '曹正拿着他的禅仗。']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'source': 'sanguo', 'paragraph_id': 960}, {'source': 'sanguo', 'paragraph_id': 689}, {'source': 'sanguo', 'paragraph_id': 470}, {'source': 'shuihu', 'paragraph_id': 3151}]], 'distances': [[0.409540593624115, 0.4200502038002014, 0.43137478828430176, 0.43250322341918945]]} # {'ids': [['shuihu_para_2180', 'shuihu_para_1782', 'shuihu_para_1819', 'shuihu_para_1986']], 'embeddings': None, 'documents': [['林冲应承了。', '急急躬身唱喏道:“林冲谨参。”', '伴教头把棒就地下鞭了一棒,来抢林冲。', '林冲道:“原来如此。”']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'source': 'shuihu', 'paragraph_id': 2180}, {'source': 'shuihu', 'paragraph_id': 1782}, {'source': 'shuihu', 'paragraph_id': 1819}, {'paragraph_id': 1986, 'source': 'shuihu'}]], 'distances': [[0.3571985960006714, 0.37454545497894287, 0.37682223320007324, 0.3775442838668823]]} # {'ids': [['honglou_para_1322', 'honglou_para_1378', 'honglou_para_1326', 'honglou_para_1366']], 'embeddings': None, 'documents': [['黛玉道:', '黛玉忙笑道:', '宝钗道:', '黛玉也笑道:']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'paragraph_id': 1322, 'source': 'honglou'}, {'paragraph_id': 1378, 'source': 'honglou'}, {'source': 'honglou', 'paragraph_id': 1326}, {'paragraph_id': 1366, 'source': 'honglou'}]], 'distances': [[0.27646827697753906, 0.2964853048324585, 0.3215979337692261, 0.33078110218048096]]} # {'ids': [['xiyou_para_1092', 'xiyou_para_1788', 'xiyou_para_687', 'xiyou_para_2085']], 'embeddings': None, 'documents': [['第三十一回 猪八戒义激猴王 孙行者智降妖怪', '第五十二回 悟空大闹金山兜洞 如来暗示主人公', '第十八回 观音院唐僧脱难 高老庄行者降魔', '第六十一回 猪八戒助力败魔王 孙行者三调芭蕉扇']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'paragraph_id': 1092, 'source': 'xiyou'}, {'source': 'xiyou', 'paragraph_id': 1788}, {'source': 'xiyou', 'paragraph_id': 687}, {'paragraph_id': 2085, 'source': 'xiyou'}]], 'distances': [[0.34179985523223877, 0.4036158323287964, 0.40619802474975586, 0.4368671178817749]]} ``` ``` python import chromadb from chromadb.config import Settings # from sentence_transformers import SentenceTransformer client = chromadb.PersistentClient(path="./test_chromadb", settings=Settings(anonymized_telemetry=False)) collection = client.get_collection(name="legal_docs") print(collection.query(query_texts=["诸葛亮和刘备是什么关系"], n_results=4)) print(collection.query(query_texts=["曹操的儿子都是谁"], n_results=4)) print(collection.query(query_texts=["林冲的外号叫什么"], n_results=4)) print(collection.query(query_texts=["林黛玉葬的什么花"], n_results=4)) print(collection.query(query_texts=["孙悟空一个筋斗云有多远"], n_results=4)) #{'ids': [['sanguo_para_689', 'sanguo_para_1280', 'sanguo_para_876', 'sanguo_para_613']], 'embeddings': None, 'documents': [['第五十回 诸葛亮智算华容 关云长义释曹操', '第九十九回\u3000诸葛亮大破魏兵\u3000司马懿入寇西蜀', '第六十五回 马超大战葭萌关 刘备自领益州牧', '第四十三回 诸葛亮舌战群儒 鲁子敬力排众议']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'source': 'sanguo', 'paragraph_id': 689}, {'paragraph_id': 1280, 'source': 'sanguo'}, {'paragraph_id': 876, 'source': 'sanguo'}, {'paragraph_id': 613, 'source': 'sanguo'}]], 'distances': [[0.42650896310806274, 0.450427770614624, 0.4718396067619324, 0.4771209955215454]]} #{'ids': [['sanguo_para_21', 'sanguo_para_828', 'sanguo_para_295', 'sanguo_para_689']], 'embeddings': None, 'documents': [['杀到天明,张梁、张宝引败残军士,夺路而走。忽见一彪军马,尽打红旗,当头来到,截住去路。为首闪出一将,身长七尺,细眼长髯,官拜骑都尉,沛国谯郡人也,姓曹名操字孟德。操父曹嵩,本姓夏侯氏,因为中常侍曹腾之养子,故冒姓曹。曹嵩生操,小字阿瞒,一名吉利。操幼时,好游猎,喜歌舞,有权谋,多机变。操有叔父,见操游荡无度,尝怒之,言于曹嵩。嵩责操。操忽心生一计,见叔父来,诈倒于地,作中风之状。叔父惊告嵩,嵩急视之。操故无恙。嵩曰:“叔言汝中风,今已愈乎?”操曰:“儿自来无此病;因失爱于叔父,故见罔耳。”嵩信其言。后叔父但言操过,嵩并不听。因此,操得恣意放荡。时人有桥玄者,谓操曰:“天下将乱,非命世之才不能济。能安之者,其在君乎?”南阳何顒见操,言:“汉室将亡,安天下者,必此人也。”汝南许劭,有知人之名。操往见之,问曰:“我何如人?”劭不答。又问,劭曰:“子治世之能臣,乱世之奸雄也。”操闻言大喜。年二十,举孝廉,为郎,除洛阳北部尉。初到任,即设五色棒十余条于县之四门,有犯禁者,不避豪贵,皆责之。中常侍蹇硕之叔,提刀夜行,操巡夜拿住,就棒责之。由是,内外莫敢犯者,威名颇震。后为顿丘令,因黄巾起,拜为骑都尉,引马步军五千,前来颍川助战。正值张梁、张宝败走,曹操拦住,大杀一阵,斩首万余级,夺得旗幡、金鼓、马匹极多。张梁、张宝死战得脱。操见过皇甫嵩、朱儁,随即引兵追袭张梁、张宝去了。', '却说曹操在许都,威福日甚。长史董昭进曰:“自古以来,人臣未有如丞相之功者,虽周公、吕望,莫可及也。栉风沐雨,三十余年,扫荡群凶,与百姓除害,使汉室复存。岂可与诸臣宰同列乎?合受魏公之位,加九锡以彰功德。”你道那九锡?一,车马(大辂、戎辂各一。大辂,金车也。戎辂,兵车也。玄牡二驷,黄马八匹。)二,衣服(衮冕之服,赤舄副焉。衮冕,王者之服。赤舄,朱履也。)三,乐悬(乐悬,王者之乐也。)四,朱户(居以朱户,红门也。)五,纳陛(纳陛以登。陛,阶也。)六,虎贲(虎贲三百人,守门之军也。)七,鈇钺(鈇钺各一。鈇,即斧也。钺,斧属。)八,弓矢(彤弓一,彤矢百。彤,赤色也。【左玄右旅去方】弓十,【左玄右旅去方】矢千。【左玄右旅去方】,黑色也。)九,秬鬯圭瓒(秬鬯一卣,圭瓒副焉。秬,黑黍也。鬯,香酒,灌地以求神于阴。卣,中樽也。圭瓒,宗庙祭器,以祀先王也。)侍中荀彧曰:“不可。丞相本兴义兵,匡扶汉室,当秉忠贞之志,守谦退之节。君子爱人以德,不宜如此。”曹操闻言,勃然变色。董昭曰:“岂可以一人而阻众望?”遂上表请尊操为魏公,加九锡。荀彧叹曰:“吾不想今日见此事!”操闻,深恨之,以为不助己也。建安十七年冬十月,曹操兴兵下江南,就命荀彧同行。彧已知操有杀己之心,托病止于寿春。忽曹操使人送饮食一盒至。盒上有操亲笔封记。开盒视之,并无一物。彧会其意,遂服毒而亡。年五十岁。后人有诗叹曰:“文若才华天下闻,可怜失足在权门。后人休把留侯比,临没无颜见汉君。”其子荀恽,发哀书报曹操。操甚懊悔,命厚葬之,谥曰敬侯。', '大臣立权之明表也。司空曹操:祖父中常侍腾,与左棺、徐璜并作妖孽,', '第五十回 诸葛亮智算华容 关云长义释曹操']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'source': 'sanguo', 'paragraph_id': 21}, {'source': 'sanguo', 'paragraph_id': 828}, {'paragraph_id': 295, 'source': 'sanguo'}, {'source': 'sanguo', 'paragraph_id': 689}]], 'distances': [[0.453970730304718, 0.4653202295303345, 0.4711993932723999, 0.4724085330963135]]} #{'ids': [['shuihu_para_2118', 'shuihu_para_2211', 'shuihu_para_1398', 'shuihu_para_1387']], 'embeddings': None, 'documents': [['林冲道:“你道我是谁?”', '那汉子见了林冲,叫声“阿也!”', '林冲连忙问道:“在那里?”', '众人道:“这官人是八十万禁军枪棒教头林武师,名唤林冲。”']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'source': 'shuihu', 'paragraph_id': 2118}, {'source': 'shuihu', 'paragraph_id': 2211}, {'source': 'shuihu', 'paragraph_id': 1398}, {'paragraph_id': 1387, 'source': 'shuihu'}]], 'distances': [[0.3686162829399109, 0.406404972076416, 0.4220902919769287, 0.42481696605682373]]} #{'ids': [['honglou_para_148', 'honglou_para_1056', 'honglou_para_170', 'honglou_para_273']], 'embeddings': None, 'documents': [['宝玉看了,又见后面画着一簇鲜花,一床破席,也有几句言词,写道是:', '问菊潇湘妃子', '偶因济刘氏,巧得遇恩人.后面又画着一盆茂兰,旁有一位凤冠霞帔的美人.也有判云:', '谁知此时黛玉不在自己房中,却在宝玉房中大家解九连环顽呢.周瑞家的进来笑道:“林姑娘,姨太太着我送花儿与姑娘带来了。”宝玉听说,便先问:“什么花儿?拿来给我。”一面早伸手接过来了.开匣看时,原来是宫制堆纱新巧的假花儿.黛玉只就宝玉手中看了一看,便问道:“还是单送我一人的,还是别的姑娘们都有呢?"周瑞家的道:“各位都有了,这两枝是姑娘的了。”黛玉冷笑道:“我就知道,别人不挑剩下的也不给我。”周瑞家的听了,一声儿不言语.宝玉便问道:“周姐姐,你作什么到那边去了。”周瑞家的因说:“太太在那里,因回话去了,姨太太就顺便叫我带来了。”宝玉道:“宝姐姐在家作什么呢?怎么这几日也不过这边来?"周瑞家的道:“身上不大好呢。”宝玉听了,便和丫头说:“谁去瞧瞧?只说我与林姑娘打发了来请姨太太姐姐安,问姐姐是什么病,现吃什么药.论理我该亲自来的,就说才从学里来,也着了些凉,异日再亲自来看罢。”说着,茜雪便答应去了.周瑞家的自去,无话.原来这周瑞的女婿,便是雨村的好友冷子兴,近因卖古董和人打官司,故教女人来讨情分.周瑞家的仗着主子的势利,把这些事也不放在心上,晚间只求求凤姐儿便完了.至掌灯时分,凤姐已卸了妆,来见王夫人回话:“今儿甄家送了来的东西,我已收了.咱们送他的,趁着他家有年下进鲜的船回去,一并都交给他们带了去罢?"王夫人点头.凤姐又道:“临安伯老太太生日的礼已经打点了,派谁送去呢?"王夫人道:“你瞧谁闲着,就叫他们去四个女人就是了,又来当什么正经事问我。”凤姐又笑道:“今日珍大嫂子来,请我明日过去逛逛,明日倒没有什么事情。”王夫人道:“有事没事都害不着什么.每常他来请,有我们,你自然不便意,他既不请我们,单请你,可知是他诚心叫你散淡散淡,别辜负了他的心,便有事也该过去才是。”凤姐答应了.当下李纨,迎,探等姐妹们亦来定省毕,各自归房无话.']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'paragraph_id': 148, 'source': 'honglou'}, {'paragraph_id': 1056, 'source': 'honglou'}, {'source': 'honglou', 'paragraph_id': 170}, {'paragraph_id': 273, 'source': 'honglou'}]], 'distances': [[0.39649009704589844, 0.4116135835647583, 0.4117123484611511, 0.4155237674713135]]} #{'ids': [['xiyou_para_644', 'xiyou_para_2242', 'xiyou_para_2682', 'xiyou_para_2040']], 'embeddings': None, 'documents': [['却说孙大圣到空中把腰儿扭了一扭早来到黑风山上。', '话表孙大圣无计可施纵一朵祥云驾筋斗径转南赡部洲去拜武当山参请荡魔天尊解释三藏、八戒、沙僧、天兵等众之灾。他在半空里无停止不一日早望见祖师仙境轻轻按落云头定睛观看好去处:巨镇东南中天神岳。芙蓉峰竦杰紫盖岭巍峨。九江水尽荆扬远百越山连翼轸多。上有太虚之宝洞朱6之灵台。三十六宫金磬响百千万客进香来。舜巡禹祷玉简金书。楼阁飞青鸟幢幡摆赤裾。地设名山雄宇宙天开仙境透空虚。几树榔梅花正放满山瑶草色皆舒。龙潜涧底虎伏崖中。幽含如诉语驯鹿近人行。白鹤伴云栖老桧青鸾丹凤向阳鸣。玉虚师相真仙地金阙仁慈治世门。上帝祖师乃净乐国王与善胜皇后梦吞日光觉而有孕怀胎一十四个月于开皇元年甲辰之岁三月初一日午时降诞于王宫。那爷爷;幼而勇猛长而神灵。不统王位惟务修行。父母难禁弃舍皇宫。参玄入定在此山中。功完行满白日飞升。玉皇敕号真武之名。玄虚上应龟蛇合形。周天**皆称万灵。无幽不察无显不成。劫终劫始剪伐魔精。', '“二哥你把担子挑一肩儿。”真个八戒接了担子挑上。沙僧拢着缰绳老师父稳坐雕鞍随行者都奔山崖上大路。但见那山:', '那大圣飘飘荡荡左沉不能落地右坠不得存身就如旋风翻败叶流水淌残花滚了一夜直至天明方才落在一座山上双手抱住一块峰石。定性良久仔细观看却才认得是小须弥山。大圣长叹一声道:“好利害妇人!怎么就把老孙送到这里来了?我当年曾记得在此处告求灵吉菩萨降黄风怪救我师父。那黄风岭至此直南上有三千余里今在西路转来乃东南方隅不知有几万里。等我下去问灵吉菩萨一个消息好回旧路。”正踌躇间又听得钟声响亮急下山坡径至禅院。那门前道人认得行者的形容即入里面报道:“前年来请菩萨去降黄风怪的那个毛脸大圣又来了。”菩萨知是悟空连忙下宝座相迎入内施礼道:“恭喜!取经来耶?”悟空答道:“正好未到!早哩早哩!”灵吉道:“既未曾得到雷音何以回顾荒山?”行者道:']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'source': 'xiyou', 'paragraph_id': 644}, {'source': 'xiyou', 'paragraph_id': 2242}, {'so ``` * 搜索结果分析: 1. 人物名直接检索 - 查询如“诸葛亮”、“曹操”、“林冲”、“林黛玉”、“孙悟空”时,返回的内容大多与人物直接相关。 - 例如,“林冲”检索结果里出现了“林冲道”、“林冲连忙问道”、“八十万禁军枪棒教头林武师,名唤林冲”,这些是高相关的内容。 - “孙悟空”检索结果出现了“孙大圣”、“筋斗云”、“悟空答道”等,也较为准确。 2. 复杂问题检索 - 当查询“诸葛亮和刘备是什么关系”、“曹操的儿子都是谁”、“林冲的外号叫什么”、“林黛玉葬的什么花”、“孙悟空一个筋斗云有多远”这些带有问句和推理需求的问题时,检索结果并不总是直接给出答案,而是返回包含相关词汇或部分上下文的段落。 - 例如,“诸葛亮和刘备是什么关系”可能返回含有两人名字的章节标题或片段,但未必直接说明“君臣”、“朋友”等关系。 - “林黛玉葬的什么花”可能出现“林黛玉”或“花”,但未必直接出现“葬花”场景。 3. 分析 - 使用的是语义向量检索,模型能理解词语之间的关联,但未必能精准定位“问答”场景的直接答案。 - 分段方式是按段落,而很多问题的答案分布在多个段落甚至整章,需要“抽取+推理”,而不仅仅是“语义相关”。 - 嵌入模型适合检索“语义相近”内容,但不支持“知识问答”或“结构化问答”。 - 可以在构建搜过query时使用where条件在metadata filed和documents中命中更多关联的信息 ## 2 milvus 整体使用方式比较类似 https://github.com/milvus-io/milvus
dingfeng
2025年11月4日 15:43
9
0 条评论
转发文档
收藏文档
上一篇
下一篇
评论
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码