Faits :
A.
Le 15 novembre 2017, le Ministère public de l'arrondissement du Nord vaudois a ouvert une instruction pénale contre A._, ressortissant de Serbie-Monténégro né en 1985, pour tentative de meurtre, séquestration et enlèvement, contrainte sexuelle, lésions corporelles simples, recel, violation du domaine secret ou du domaine privé au moyen d'un appareil de prise de vues, menaces, contrainte et injure. Il lui est en substance reproché d'avoir passé à tabac son amie B._ en la frappant avec les pieds et les poings sur tout le corps, lui causant de nombreux hématomes, de lui avoir à plusieurs reprises plongé la tête sous l'eau dans la baignoire, occasionnant des pertes de connaissance, d'avoir menacé de la tuer ou de la blesser et d'avoir commis des actes de contrainte sexuelle avant que la victime ne s'enfuie, nue, pour se réfugier chez le concierge de son immeuble. Le prévenu a été placé en détention provisoire par décision du Tribunal des mesures de contrainte du canton de Vaud (Tmc) du 18 novembre 2017 en raison des risques de réitération et de passage à l'acte ainsi que de collusion.
La détention provisoire a ensuite été prolongée par décisions du Tmc des 9 février, 15 mai, 7 août et 7 novembre 2018, 5 février, 6 mai et 13 août 2019 en substance pour les mêmes motifs, auxquels s'est ajouté le risque de fuite. Cette dernière décision a été confirmée par arrêt du 30 août 2019 de la Chambre des recours pénale du Tribunal cantonal vaudois; la prévention avait été étendue notamment à des actes de contrainte sexuelle, actes d'ordre sexuel avec des enfants et viol. Ces nouvelles accusations reposaient sur les seules déclarations de la seconde plaignante, mais on ne voyait pas pour quelle raison celle-ci aurait menti, se mettant ainsi en opposition avec les membres de sa famille. S'agissant des infractions commises au préjudice de B._, la version de la plaignante était accréditée par la présence de nombreuses lésions constatées quelques heures après les faits; du sang avait été retrouvé sur les lieux. Un rapport d'expertise, réalisé sans examen du prévenu (celui-ci s'y étant opposé) concluait, sur la base du dossier, à un risque de récidive élevé. Le risque de fuite devait aussi être retenu. La détention restait proportionnée étant précisé que le 15 novembre 2019, l'enquête devrait être clôturée.
Le 6 novembre 2019, le Ministère public a demandé une nouvelle prolongation de la détention en relevant que le dévérouillage du téléphone portable du prévenu avait pris plusieurs mois et nécessitait l'examen d'une quantité énorme de données, dont une bonne partie de fichiers en langue étrangère. Par ordonnance du 14 novembre 2019, le Tmc a fait droit à cette demande. Cette décision a été confirmée par arrêt du 29 novembre 2019 de la Chambre des recours pénale, puis par arrêt du Tribunal fédéral du 24 janvier 2020 (1B_7/2020). Dans ce dernier arrêt, le Tribunal fédéral a confirmé qu'il existait des charges suffisantes, que le risque de fuite était indéniable et que le risque de réitération pouvait également être retenu. L'enquête et la détention duraient depuis plus de deux ans mais le principe de célérité était encore respecté, l'attitude du prévenu ayant pu compliquer l'instruction. La direction de la procédure était toutefois invitée à clore son enquête dans les meilleurs délais.
B.
La détention du prévenu a encore été prolongée par décisions du Tmc des 5 février, 1er mai et 5 août 2020. Par ordonnance du 1er septembre 2020, le Tmc a rejeté une nouvelle demande de mise en liberté. Cette décision a été confirmée par arrêt du 18 septembre 2020 de la Chambre des recours pénale. Les charges étaient suffisantes; même si l'infraction d'actes d'ordre sexuel avec des enfants était désormais prescrite, l'infraction de viol commise en 2008 ne l'était pas. Des photographies représentant des actes d'ordre sexuel avec des enfants avaient été découvertes en juillet 2020 dans le téléphone portable du prévenu, ainsi que d'autres supports représentant des actes d'ordre sexuel avec violence. Aucun élément nouveau ne permettait de remettre en cause les risques de fuite et de réitération. Les infractions pour lesquelles le prévenu serait renvoyé en jugement étaient passibles de peines allant bien au-delà de la durée de la détention déjà subie. L'enquête devrait toutefois être close rapidement, en principe au 15 octobre 2020, soit après l'échéance du délai de clôture fixé en l'état au 26 août 2020.
C.
A._ forme un recours en matière pénale par lequel il conclut à la réforme de l'arrêt cantonal en ce sens qu'il est immédiatement mis en liberté, le cas échéant moyennant des mesures de substitution lui interdisant d'approcher les victimes à moins de 100 m. Il demande l'assistance judiciaire.
La Chambre des recours pénale renonce à se déterminer et se réfère aux considérants de son arrêt. Le Ministère public n'a pas répondu au recours.
Considérant en droit :
1.
Le recours en matière pénale (art. 78 al. 1 LTF) est ouvert et le recourant dispose d'un intérêt juridique à la réforme de la décision attaquée qui confirme la prolongation de sa détention provisoire (art. 81 al. 1 let. a et b ch. 1 LTF). Le recours a été formé en temps utile (art. 100 al. 1 LTF) contre une décision rendue par une autorité statuant en tant que dernière instance cantonale (art. 80 LTF) et les conclusions présentées sont recevables au regard de l'art. 107 al. 2 LTF. Il y a donc lieu d'entrer en matière.
2.
S'agissant de l'existence de charges suffisantes, des risques de fuite et de réitération, le recourant reprend les arguments déjà soumis au Tribunal fédéral et rejetés par celui-ci dans son arrêt du 24 janvier 2020. Le recourant relève qu'en fin d'instruction, sa condamnation devrait apparaître vraisemblable pour justifier un maintien en détention. Il admet qu'une telle vraisemblance existerait pour les délits qui lui sont reprochés, mais pas pour les crimes de viol (les déclarations de la victime, 10 ans après les faits, seraient imprécises et non constantes) et de meurtre (l'accusation reposerait sur les seules déclarations de la victime et les lésions constatées seraient légères et peu spécifiques). La cour cantonale ne se prononcerait pas sur les accusations d'enlèvement, séquestration et contrainte sexuelle, le recourant mettant en cause la crédibilité de la victime.
2.1. La cour de céans a rappelé dans son précédent arrêt qu'il n'appartient pas au juge de la détention de procéder à une pesée complète des éléments à charge et à décharge et d'apprécier la crédibilité des personnes qui mettent en cause le prévenu. Elle a constaté que les déclarations de la plaignante constituaient des éléments à charge importants concernant les faits du 14 novembre 2017, corroborés par les constatations médicales faites quelques heures après les faits. Il existait en outre au dossier plusieurs déclarations selon lesquelles le recourant aurait menacé et violenté la plaignante. Les accusations d'attouchements (désormais prescrits) et de viol de la seconde plaignante reposaient également sur les déclarations de celle-ci, mais on ne voyait pour quelles raisons elle aurait menti, se mettant ainsi en opposition avec son père et sa soeur. Il faut en outre admettre que les fichiers retrouvés dans le téléphone portable du prévenu, montrant des actes sexuels violents ou des actes d'ordre sexuel avec des enfants, ainsi qu'un enregistrement intégral de faits survenus en octobre 2017 et qui ont donné lieu à l'ouverture d'une instruction complémentaire, viennent renforcer ces soupçons. Ces différents éléments permettent, alors que l'enquête est à son terme, de confirmer l'existence de charges suffisantes à l'égard du recourant.
2.2. S'agissant du risque de fuite, reconnu en raison de la nationalité du recourant et de ses liens avec son pays d'origine, il ne s'est pas affaibli en raison de la durée de la détention provisoire, la gravité des charges retenues permettant de redouter une condamnation allant, quoi qu'en dise le recourant, bien au-delà de cette durée. Quant au risque de réitération retenu sur la base de faits concrets et de l'expertise figurant au dossier - même si celle-ci a été réalisée sans examen direct de l'intéressé -, aucun élément nouveau ne permet de le remettre en cause. Dans la mesure où il ne sont pas appellatoires, les griefs doivent donc être écartés.
3.
Invoquant le principe de célérité, le recourant relève qu'il se trouve détenu depuis près de trois ans et que le Tribunal fédéral avait, en janvier 2020 déjà, invité la direction de la procédure à clore l'enquête dans les meilleurs délais; or, près de neuf mois plus tard, l'enquête ne serait toujours pas achevée, le Ministère public ayant encore requis une prolongation d'un mois de la détention provisoire.
3.1. La durée de la détention apparaît encore compatible avec celle d'une éventuelle peine privative de liberté, le recourant étant notamment mis en prévention de tentative de meurtre, séquestration, enlèvement et contrainte sexuelle d'une part, viol d'autre part. Après le dépôt du rapport d'expertise psychiatrique en juillet 2019, le téléphone portable du prévenu n'avait pu être déverrouillé qu'en août 2019, le recourant ayant refusé d'en donner l'accès. Un nombre très important de données a ensuite dû être analysé, dont une bonne part de fichiers en langue étrangère. L'attitude du recourant, en particulier son refus de se soumettre à l'expertise psychiatrique et son refus de déverrouiller son téléphone, ne sont pas non plus étrangers aux difficultés rencontrées durant l'instruction. Dans son arrêt du 24 janvier 2020, la cour de céans a considéré que l'on ne discernait alors aucune violation des principes de célérité et de proportionnalité. La direction de la procédure était toutefois invitée à clore son enquête dans les meilleurs délais.
3.2. Le 6 mars 2020, la Police cantonale a produit un rapport d'investigation au sujet des données extraites du téléphone portable du prévenu, soit les appels, les SMS, la vidéothèque, les applications de messagerie ainsi que des enregistrements audio. Sont annexées une centaine de pages de messages What's app, une centaine de pages de SMS traduits en français, un résumé d'enregistrements et une retranscription d'un enregistrement audio concernant des faits survenus en octobre 2017. Le prévenu et la plaignante ont été entendus les 10 et 19 mars 2020. Au mois de juillet 2020, le prévenu a été interpellé par le Ministère public afin de savoir s'il désirait être entendu au sujet des images à caractère notamment pédopornographique, ce à quoi il a renoncé. Un avis de prochaine clôture a été adressé aux parties le 15 juillet 2020 avec un délai au 17 août 2020 pour d'éventuelles réquisitions. Le prévenu ayant nié avoir volontairement détenu des images pornographiques interdites sur son téléphone, un mandat d'investigation a été confié le 11 septembre 2020 à la police, qui s'est déterminée à ce sujet le 2 octobre 2020.
Il ressort de ce qui précède qu'après l'arrêt du Tribunal fédéral du 24 janvier 2020, l'enquête a encore connu des développements importants liés en particuliers au résultat de l'analyse du contenu du téléphone du prévenu. Cela étant, les actes d'instruction se sont succédés sans retard excessif ni temps morts inexpliqués, de sorte qu'il n'y a pas de violation du principe de célérité. Le procureur a d'ailleurs précisé, dans sa dernière demande de prolongation de détention d'un mois formulée le 8 octobre 2020, que le renvoi en jugement pourrait intervenir dans ce délai. Le grief doit donc être écarté.
4.
Le recourant demande enfin, à titre subsidiaire, le prononcé de mesures de substitution. Il ne fait toutefois valoir aucun élément nouveau qui justifierait une appréciation différente de celle que le Tribunal fédéral a exprimée à ce propos dans son arrêt du 24 janvier 2020. Dans la mesure où il est suffisamment motivé, le grief est rejeté.
5.
Sur le vu de ce qui précède, le recours est rejeté, dans la mesure où il est recevable. Le recourant a demandé l'assistance judiciaire et les conditions posées à l'art. 64 al. 1 LTF peuvent encore être considérées comme réunies. Me Kathrin Gruber est désignée comme avocate d'office et il lui est alloué une indemnité à titre d'honoraires, qui sera fixée forfaitairement et supportée par la caisse du Tribunal fédéral. Il n'est pas perçu de frais judiciaires (art. 64 al. 1 et 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est admise; Me Kathrin Gruber est désignée comme avocate d'office du recourant et une indemnité de 1'500 fr. lui est allouée à titre d'honoraires, à payer par la caisse du Tribunal fédéral. Il n'est pas perçu de frais judiciaires.
3.
Le présent arrêt est communiqué à la mandataire du recourant, au Ministère public de l'arrondissement du Nord vaudois et au Tribunal cantonal du canton de Vaud, Chambre des recours pénale.
Lausanne, le 2 novembre 2020
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président : Chaix
Le Greffier : Kurz