类型错误:__init__() 缺少 1 个必需的位置参数:“内容”

a.s*_*tan 4 elasticsearch haystack

当我在文档存储中写入文档时,我使用 Haystack 来搜索查询,不幸的是我发生了这个错误。这是我的代码:

if __name__ == "__main__":
    document_store = ElasticsearchDocumentStore(
        host='localhost',
        username='', password='',
        index='aurelius'
    )
    df = pd.read_csv('news.csv')
    print(df.columns)
    data_json = [{
        'text': text,
        'meta': {
            'source': 'news'
        }
    } for text in df['Text'].values]
    document_store.write_documents(data_json)
    retriever_elastic = DensePassageRetriever(
        document_store=document_store,
        query_embedding_model='facebook/dpr-question_encoder-single-nq-base',
        passage_embedding_model='facebook/dpr-ctx_encoder-single-nq-base',
        embed_title=True
    )
    document_store.update_embeddings(retriever=retriever_elastic)
    print(retriever_elastic.retrieve("german business confidence slides german business confidence fell in february knocking hopes of a speedy recovery in europe s largest economy. "))
Run Code Online (Sandbox Code Playgroud)

dmi*_*igo 7

基于@UninformedUser 回复。

我认为是document.store.write_documents(data_json)抛出异常的。由于参数的格式已从 更改{ 'text': str, 'meta': obj}{'content': str, 'meta': obj}.

所以基本上你只需要修复代码的列表理解部分:

data_json = [{
    'content': text,
    'meta': {
        'source': 'news'
    }
} for text in df['Text'].values]
document_store.write_documents(data_json)
Run Code Online (Sandbox Code Playgroud)