question | answer
Why am I seeing duplicate answers being returned? | The ElasticsearchDocumentStore and MilvusDocumentStore rely on Elasticsearch and Milvus backend services which persist after your Python script has finished running. If you rerun your script without deleting documents, you could end up with duplicate copies of your documents in your database. The easiest way to avoid this is to call DocumentStore.delete_documents() after initialization to ensure that you are working with an empty DocumentStore. DocumentStores also have a duplicate_documents argument in their **init**() and write_documents methods where you can define whether you'd like skip writing duplicates, overwrite existing duplicates or raise an error when there are duplicates.
How can I make sure that my GPU is being engaged when I use Haystack? | You will want to ensure that a CUDA enabled GPU is being engaged when Haystack is running (you can check by running nvidia-smi -l on your command line). Components which can be sped up by GPU have a use_gpu argument in their constructor which you will want to set to True.
How do I speed up my predictions? | There are many different ways to speed up the performance of your Haystack system. The Reader is usually the most computationally expensive component in a pipeline and you can often speed up your system by using a smaller model, like deepset/minilm-uncased-squad2 (see Benchmarks). This usually comes with a small trade-off in accuracy. You can reduce the work load on the Reader by instructing the Retriever to pass on less documents. This is done by setting the top_k_retriever parameter to a lower value. Making sure that your documents are shorter can also increase the speed of your system. You can split your documents into smaller chunks by using the PreProcessor (see How to Preprocess Documents). For more optimization suggestions, have a look at Optimization and also our blogs."
How do I use Haystack for my language? | The components in Haystack, such as the Retriever or the Reader, are designed in a language agnostic way. However you may have to set certain parameters or load models pretrained for your language in order to get good performance out of Haystack. See Languages Other Than English for more details.
How can I add metadata to my documents so that I can apply filters? | When providing your documents in the input format you can provide metadata information as a dictionary under the meta key. At query time, you can provide a filters argument (most likely through Pipeline.run()) that specifies the accepted values for a certain metadata field (see Metadata Filtering).
How can I see each component's output if it's running in a pipeline? | To find out more about how to debug a pipeline, have a look at Returning Debugging Information.
How can I serve my Haystack model? | Haystack models can be wrapped in a REST API. For basic details on how to set this up, have a look at REST API.
