Closed MingFL closed 1 year ago
encoder_type是参数,infer时传入就行,不需要保存。
@shibing624 如果要保存到本地,复制到另外一个机器上进行加载,pickle好像不想,是否可以用 faiss 进行保存,有对应的示例吗 我在这个里面问到了这个问题 https://github.com/shibing624/text2vec/issues/75
比如把这个耗时的 tokenized_corpus
保存下来。(二进制或者用faiss能用文件加载上来)
def test():
corpus = ['女网红能火的只是一小部分', '当下最火的男明星为鹿晗', "How is the weather today?", "你觉得哪个女的明星最红?"]
# 比如把这个耗时的 tokenized_data 保存下来。(二进制或者用faiss能用文件加载上来)
tokenized_corpus = [segment(doc) for doc in corpus]
bm25 = BM25Okapi(tokenized_corpus)
print("------------------------------")
query = '当下最火的女的明星是谁?'
tokenized_query = segment(query)
doc_scores = bm25.get_scores(tokenized_query)
print(doc_scores)
a = bm25.get_top_n(tokenized_query, corpus, n=3)
print(a)
用faiss保存index,见示例https://github.com/shibing624/similarities/blob/main/examples/fast_sim_demo.py, save_index, 我实现了annoy和hnsw,你可以类比加个faiss的。
@shibing624 我觉得你这个好复杂,用现在参考了 from langchain.vectorstores import FAISS
的里面的 add_texts(texts, texts_metedata)
完成了我想要的功能。后面有用到 hnsw
时候我就关注下您这个实现。
langchain 封装的比较多,你想用langchain也可以。
save_model函数保存的是model.bert。实际上是不包含encoder_type的node。 inference emb时必须要知道使用的encoder_type是什么才能对齐结果。 有办法把完整模型都保存,包含encoder_type关联的部分吗